我正在寻找一种通过SSH登录到Cisco UCS服务器并执行几个命令的方法。
我可以登录并执行几个命令,并得到输出。但一个命令,需要y和回车键似乎不工作。
如果我通过终端手动尝试相同的操作,它会工作。看起来无论使用\n
,\r
或\r\n
,回车键都没有在服务器上执行。
ssh = paramiko.client.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(host, username=username, password=password)
ucs = ssh.invoke_shell()
ucs.sendall('scope chassis\r\n')
time.sleep(2)
ucs.sendall('power on\r\n')
time.sleep(2)
ucs.sendall("y\r\n")
time.sleep(10)
ucs.sendall('show\r\n')
time.sleep(10)
s = ucs.recv(4096)
with open("Output.txt", "ab") as text_file:
text_file.write(s)
with open("temp2", "wb") as text_file:
text_file.write(s)
ssh.close()
hostname# scope chassis
hostname /chassis #
hostname /chassis # power on
This operation will change the server's power state.
Do you want to continue?[y|N]y
hostname /chassis #
hostname /chassis # show
Power Serial Number Product Name PID UUID
----- ------------- ------------- ------------- ------------------------------------
off xxxxxxxxxxx UCS C240 M3S UCSC-C240-M3S xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
1条答案
按热度按时间cbwuti441#
我将查看以下命令:
可能是因为您同时使用
\r
和\n
,所以控制台将\r
解释为接受power on
命令,将\n
解释为立即取消它。因此,在您有机会输入Y之前,该命令已经被前面的\n
取消了。