python pexpect不启动我的ssh隧道
我得到了这个脚本(称为隧道): (ip服务器替换为ssh_服务器_ip) 我尝试通过python pexpect运行它python pexpect不启动我的ssh隧道,python,ssh,pexpect,Python,Ssh,Pexpect,我得到了这个脚本(称为隧道): (ip服务器替换为ssh_服务器_ip) 我尝试通过python pexpect运行它 import pexpect import time p = pexpect.run('./tunnel') #does not work with spawn #p = pexpect.spawn('./tunnel') p.expect('password: ') time.sleep(2) p.sendline('pswd') 当我运行脚本时,有一个与服务器的连接
import pexpect
import time
p = pexpect.run('./tunnel')
#does not work with spawn
#p = pexpect.spawn('./tunnel')
p.expect('password: ')
time.sleep(2)
p.sendline('pswd')
当我运行脚本时,有一个与服务器的连接,但它不会持续很长时间(几秒钟)
如果ssh隧道已完全建立,我应该具备以下功能:
ssh 8130 root 3u IPv4 503864 0t0 TCP 192.168.1.36:46326->ssh_server_ip:https (ESTABLISHED)
ssh 8130 root 4u IPv6 505215 0t0 TCP [::1]:5545 (LISTEN)
ssh 8130 root 5u IPv4 505216 0t0 TCP 127.0.0.1:5545 (LISTEN)
我应该使用bash expect而不是python pexpect吗
thanx伙计们 你需要这样写:
p.sendline('password')
p.expect(pexpect.EOF)
否则,Python脚本将在发送密码后立即退出,这反过来将终止
ssh
命令。当然输出中没有错误。好的,现在出现另一个问题;看起来需要轰炸服务器(我需要一次又一次地尝试连接)才能接受连接。在我的python脚本中,如果服务器不接受连接,就会出现错误。所以我需要在没有连接的情况下循环脚本,但我不知道在这种情况下使用什么条件。听起来像是另一个问题。请问一个新问题。
ssh 8130 root 3u IPv4 503864 0t0 TCP 192.168.1.36:46326->ssh_server_ip:https (ESTABLISHED)
ssh 8130 root 4u IPv6 505215 0t0 TCP [::1]:5545 (LISTEN)
ssh 8130 root 5u IPv4 505216 0t0 TCP 127.0.0.1:5545 (LISTEN)
p.sendline('password')
p.expect(pexpect.EOF)