终止由 Python pexpect spawn 创建的 ssh 连接
terminating a ssh connection created by Python pexpect spawn
我已经使用 python pexpect.spawn() 命令创建了 SSH 隧道。我想关闭或终止此 ssh 连接 post 我的处理。我试过给出 <sshtunnel>.close()
/ <sshtunnel>.kill()
/ <sshtunnel>.terminate()
命令。即使在给出 <sshtunnel>.isalive()
方法时我得到一个值 False
意味着子进程已经关闭,我仍然在我的 linux [= 上看到 ssh 隧道进程 运行 25=]机器。
关于如何终止此 ssh 隧道进程的任何输入?
这是简短的代码片段。
username="username"
passwd="password"
try:
child=pexpect.spawn("ssh -C2qTnNf -D XXXX xxxx@qualifier1.qualifier2.net")
i=child.expect('password:')
print(i)
if i==0:
print(passwd)
time.sleep (0.5)
child.sendline(passwd)
child.expect('$')
time.sleep(2)
print(child)
print(child.isalive())
print('####')
child.close(force=True)
#child.terminate(force=True)
time.sleep(5)
print(child.isalive())
print(child)
except Exception as e:
print(str(e))
ssh -f
会在后台派生一个子 ssh
进程 运行(类似于 daemon),父进程会立即退出。
对于 pexpect.spawn('ssh -f ...')
,pexpect 只能与父 ssh 进程交互,因此它无法停止后台 tunnel ssh 进程。
要终止隧道 ssh 进程,您需要找到它的 PID 并执行类似 os.system('kill ...')
或 os.kill(pid, sig)
.
的操作
我已经使用 python pexpect.spawn() 命令创建了 SSH 隧道。我想关闭或终止此 ssh 连接 post 我的处理。我试过给出 <sshtunnel>.close()
/ <sshtunnel>.kill()
/ <sshtunnel>.terminate()
命令。即使在给出 <sshtunnel>.isalive()
方法时我得到一个值 False
意味着子进程已经关闭,我仍然在我的 linux [= 上看到 ssh 隧道进程 运行 25=]机器。
关于如何终止此 ssh 隧道进程的任何输入? 这是简短的代码片段。
username="username"
passwd="password"
try:
child=pexpect.spawn("ssh -C2qTnNf -D XXXX xxxx@qualifier1.qualifier2.net")
i=child.expect('password:')
print(i)
if i==0:
print(passwd)
time.sleep (0.5)
child.sendline(passwd)
child.expect('$')
time.sleep(2)
print(child)
print(child.isalive())
print('####')
child.close(force=True)
#child.terminate(force=True)
time.sleep(5)
print(child.isalive())
print(child)
except Exception as e:
print(str(e))
ssh -f
会在后台派生一个子 ssh
进程 运行(类似于 daemon),父进程会立即退出。
对于 pexpect.spawn('ssh -f ...')
,pexpect 只能与父 ssh 进程交互,因此它无法停止后台 tunnel ssh 进程。
要终止隧道 ssh 进程,您需要找到它的 PID 并执行类似 os.system('kill ...')
或 os.kill(pid, sig)
.