我正在尝试自动进行ssh连接。在此会话中,我想发送一些命令以登录到另一个子过程。
import paramiko
import os
import time
ip = 'a'
port = 22
username = 'b'
password = 'c'
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(ip,port,username,password)
channel = ssh.invoke_shell()
out = channel.recv(9999)
channel.send('net-client\n')
channel.send('connect\n')
channel.send('yes\n')
channel.send('password\n')
channel.send('help\n')
while not channel.recv_ready():
time.sleep(3)
out = channel.recv(9999)
print(out.decode("ascii"))
实际结果: 我在“ net-client”之后有正确的答案,但是当我编写下一个命令(在这种情况下为“ connect”)时,它将写在ssh-connection上而不是我的子进程...
我想继续在此子过程中发送命令(因此请放置连接,密码等命令),但是我的脚本无法处理此操作。
这是我从脚本实际打印的内容:
$
net-client
"Correct answer to the command"
& connect
yes
password
help
答案 0 :(得分:0)
最后我找到了答案。
解决方案很简单:将空格'\ n'移至新行。在输出中,我看到了已发送的命令,但缺少“按Enter”键。需要将其更改为'\ r'-回车,然后所有命令都被进程“接受”。