python pexpect 没有启动我的 ssh 隧道
python pexpect does not launch my ssh tunnel
我有这个脚本(称为隧道):
(ip 服务器替换为 ssh_server_ip)
ssh -ND 5545 -p 443 -vvv user@ssh_server_ip
我尝试 运行 通过 python 预期。
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 8872 root 3u IPv4 510801 0t0 TCP 192.168.1.36:46328->ssh_server_ip:https (ESTABLISHED)
如果 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 预期而不是 python 预期吗?
谢谢大家!
你需要这样写:
p.sendline('password')
p.expect(pexpect.EOF)
否则 Python 脚本将在发送密码后立即退出,这反过来会终止 ssh
命令。
我有这个脚本(称为隧道):
(ip 服务器替换为 ssh_server_ip)
ssh -ND 5545 -p 443 -vvv user@ssh_server_ip
我尝试 运行 通过 python 预期。
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 8872 root 3u IPv4 510801 0t0 TCP 192.168.1.36:46328->ssh_server_ip:https (ESTABLISHED)
如果 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 预期而不是 python 预期吗?
谢谢大家!
你需要这样写:
p.sendline('password')
p.expect(pexpect.EOF)
否则 Python 脚本将在发送密码后立即退出,这反过来会终止 ssh
命令。