iLO3:多个SSH命令

时间:2011-09-24 17:14:50

标签: linux shell

有没有办法通过SSH在HP集成Lights-Out 3系统中运行多个命令?我可以登录到iLO并逐行运行命令,但是我需要创建一个小的shell脚本,以连接到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中分离命令,但是无法在一行中使用多个命令。看起来像按一下命令就完成了一个命令。

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 个答案:

答案 0 :(得分:3)

此Python模块适用于HP iLO Management。检查出来

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

答案 1 :(得分:0)

尝试将命令放在一个文件中(在本例中名为theFile):

version
show /map1 license
start /system1

然后:

ssh -i dsa_key administrator@iLO-IP < theFile

分号等不起作用,因为你在另一边使用的是iLO shell,而不是普通的* nix shell。所以上面我重定向文件,换行完整,就像你手动输入所有这些内容一样。我希望它有效。

答案 2 :(得分:0)

您正在尝试将iLO视为普通的外壳,但它确实是HP的dopy界面。

话虽这么说,最简单的方法是将所有命令放在一个文件中,然后将其传递给ssh(发送所有换行符):

echo -e "version\nshow /map1 license\nstart /system1" | /usr/bin/ssh -i dsa_key administrator@<iLO-IP>

答案 3 :(得分:0)

这是一个混乱的解决方法,但你可能想要使用expect吗? 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输出中,或类似的东西),很容易破坏。

答案 4 :(得分:0)

我遇到同样的情况,希望避免运行很多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
...

是否有执行这两个命令的解决方案?

答案 5 :(得分:0)

我有类似的问题,最终使用&#34; RIBCL over HTTPS&#34; 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}

格式化并不完全相同,但如果您能够通过HTTPS而不是仅使用ssh访问iLO,这可能会给您一些灵活性。

有关各种RIBCL命令和选项的更多详细信息,请访问HP iLO 3 Scripting Guide (PDF)