Скрипт Ksh / Bash для запуска команд на основе имени ядра

242
Stan K

Я пытаюсь построить сценарий, который будет принимать все имена хостов из файла и запускать различные команды в зависимости от имени ядра.

Сначала я хочу подключиться к хосту по ssh, а после uname -aввода команды хочу отправить определенный набор команд в зависимости от версии ОС, использующей регистр

Что я сделал до сих пор:

#!/usr/bin/ksh  for ssh_host in $(cat hostsFile) do echo $ssh_host kernel=`ssh $ssh_host "uname -a"` echo $kernel  case $kernel in "Linux") echo "This is Linux" ;;  "AIX") echo "This is AIX" ;; *) echo "Not sure what this is" ;; esac done 

Я застрял, где я должен проверить, присутствует ли строка "Linux" в uname -aвыводе из переменной $ kernel.

1
Вы пробовали `uname -o`? Также `uname -s` дает непосредственно имя ядра. C0deDaedalus 6 лет назад 0

1 ответ на вопрос

1
glenn jackman

Вам просто нужно сделать свои шаблоны менее точными: искать слово где-то в тексте

case $kernel in *Linux*) echo "This is Linux" ;; *AIX*) echo "This is AIX" ;; *) echo "Not sure what this is: $kernel" ;; esac 

Кроме того, вы можете быть более конкретным, по крайней мере с GNU uname

$ uname -s Linux 

Вам нужно проверить страницу справки AIX uname, чтобы увидеть, есть ли там такая же опция.

Переменная $ kernel будет выглядеть примерно так: ** Linux boxName3.10.0-514.el7.x86_64 # 1 SMP вт 22 ноября 16:42:41 UTC 2016 x86_64 x86_64 x86_64 GNU / Linux ** - вы уверены, что это будет работать? Что касается uname -s, в AIX такого аргумента нет, поэтому я бы предпочел использовать uname -a, так как это знает каждая система * unix. Stan K 6 лет назад 0
Да, это будет работать. Вы пробовали это? glenn jackman 6 лет назад 0

Похожие вопросы