iLO3: несколько команд SSH - PullRequest
       3

iLO3: несколько команд SSH

2 голосов
/ 24 сентября 2011

есть ли способ запустить несколько команд в интегрированной системе Lights-Out 3 HP через SSH?Я могу войти в iLO и запустить командную строку за строкой, но мне нужно создать небольшой сценарий оболочки, подключиться к iLO и запускать несколько команд одну за другой.

Это строка, которую я использую,чтобы получить информацию о версии iLO:

/usr/bin/ssh -i dsa_key administrator@<iLO-IP> "version"

Теперь, как я могу сделать что-то подобное?

/usr/bin/ssh -i dsa_key administrator@<iLO-IP> "version" "show /map1 license" "start /system1"

Это не работает, потому что iLO думает, что это все одна команда,Но мне нужно что-то, чтобы войти в iLO, выполнить эти команды и затем выйти из iLO.Запуск их по очереди занимает слишком много времени, потому что каждый вход в iLO-SSH занимает ~ 5-6 секунд (5 команд = 5 * 5 секунд ...).

Я также пыталсяотделяйте команды непосредственно в iLO после ручного входа в систему, но невозможно использовать несколько команд в одной строке.Похоже, что одна команда завершается нажатием клавиши return.

Версия iLO-SSH: SM-CLP Версия 1.0

Следующие решения НЕ работали:

/usr/bin/ssh -i dsa_key administrator@<iLO-IP> "version; show /map1 license; start /system1"
/usr/bin/ssh -i dsa_key administrator@<iLO-IP> "version && show /map1 license && start /system1"

Ответы [ 6 ]

3 голосов
/ 28 апреля 2012

Этот модуль Python предназначен для управления HP iLO.проверить это

http://pypi.python.org/pypi/python-hpilo/

0 голосов
/ 29 августа 2014

У меня были похожие проблемы, и я использовал интерфейс «RIBCL over HTTPS» для iLO.Это имеет преимущества в том, что он намного более отзывчив, чем вход / выход по ssh.

При использовании curl или другого HTTP-клиента командной строки попробуйте:

USERNAME=<YOUR_ILO_USERNAME>
PASSWORD=<YOUR_ILO_PASSWORD>
ILO_URL=https://<YOUR_ILO_IP>/ribcl
curl -k -X POST -d "<RIBCL VERSION=\"2.0\">
  <LOGIN USER_LOGIN=\"${USERNAME}\" PASSWORD=\"${PASSWORD}\">
    <RIB_INFO MODE="READ">
      <GET_FW_VERSION/>
      <GET_ALL_LICENSES/>
    </RIB_INFO>
    <SERVER_INFO MODE=\"write\">
      <SET_HOST_POWER HOST_POWER=\"Yes\">
    </SERVER_INFO>
  </LOGIN>
</RIBCL>" ${ILO_URL}

Форматирование не совсем точното же самое, но если у вас есть возможность доступа к iLO через HTTPS, а не только через ssh, это может дать вам некоторую гибкость.

Дополнительные сведения о различных командах и параметрах RIBCL можно найти по адресу HP.Руководство по созданию сценариев iLO 3 (PDF) .

0 голосов
/ 12 марта 2012

Я нахожусь в том же случае и хочу избежать запуска большого количества plink команд.Итак, я видел, что вы можете добавить файл с параметром -m, но, очевидно, он выполняет только одну команду за раз :-(

plink -ssh Administrator@AddressIP -pw password -m test.txt

Какова цель файла? Существует ли специальный формат дляэтот файл?

Мой текущий текстовый файл выглядит следующим образом:

set /map1/oemhp_dircfg1 oemhp_usercntxt1=CN=TEST
set /map1/oemhp_dircfg1 oemhp_usercntxt2=CN=TEST2
...

Есть ли решение для выполнения этих двух команд?

0 голосов
/ 25 сентября 2011

Это грязный обходной путь, но не могли бы вы использовать ожидать ? Ваш скрипт в expect будет выглядеть примерно так:

# Make an ssh connection
spawn ssh -i dsa_key administrator@<iLO-IP>
# Wait for command prompt to appear
expect "$"
# Send your first command
send "version\r"
# Wait for command prompt to appear
expect "$"
# Send your second command
send "show /map1 license\r"
# Etc...

С другой стороны, это гарантированно работает. С другой стороны, это довольно неуклюжий обходной путь, очень подверженный поломке, если что-то идет не так, как должно (например, символ командной строки появится в выводе version или что-то в этом роде).

0 голосов
/ 24 сентября 2011

Вы пытаетесь относиться к iLO, как к обычной оболочке, но на самом деле это интерфейс dopy от HP.

Как говорится, самый простой способ - поместить все команды в файл и затем передать его в ssh (отправив все символы новой строки):

echo -e "version\nshow /map1 license\nstart /system1" | /usr/bin/ssh -i dsa_key administrator@<iLO-IP>
0 голосов
/ 24 сентября 2011

Попробуйте поместить свои команды в файл (в этом примере с именем theFile):

version
show /map1 license
start /system1

Тогда:

ssh -i dsa_key administrator@iLO-IP < theFile

Точки с запятой, и такие не будут работать, потому что вы 'с другой стороны, используется оболочка iLO, а не обычная * nix.Итак, выше, я перенаправляю файл с неповрежденными символами новой строки, как если бы вы вводили все это вручную в сеанс.Я надеюсь, что это работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...