有没有办法通过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"
答案 0 :(得分:3)
此Python模块适用于HP iLO Management。检查出来
答案 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)。