Python Paramiko发送CTRL+C到ssh shell

7
我正在使用Paramiko调用一个shell以便在ssh连接上使用CLI。这个CLI的问题是,如果我不使用CTRL+C明确关闭它,那么程序将无法再次打开,除非重新启动我的系统。
我已尝试以下命令:
SSH.send("^C\n")
SSH.send("\x003")

还有其他的方法可以调用它们吗?我已经使用paramiko.SSHClient()建立了一个SSH连接,然后使用ssh.invoke_shell()调用了一个shell,现在我需要发送CTRL+C到该shell以关闭shell(而不是ssh连接)。

2个回答

20

你的第二个例子已经朝着正确的方向了,但是格式还不完全正确。实际上你在那里得到了一个两个字符的字符串。

使用SSH.send("\x03") 应该可以解决问题。

不过,我可能会使用这个代替。

SSH.send(chr(3))


做到了,我的朋友,感谢你在这里解释我的错误。 - bladexeon
1
如果要发送CTRL+A,例如,是否只需使用"\x01"?如果是这样,这是什么编码方案?为了完整起见,可能值得将其添加到答案中吗?(尽管已经投票支持,但仍然非常有帮助) - Samuel Newport

3

基于:https://dev59.com/KnRA5IYBdhLWcg3w_C8w#11190794

你可以 -
要么:在调用client.exec_command()时传递get_pty=True。然后client.close()终止远程尾部。
要么:在调用channel.exec_command()之前执行channel.get_pty()。然后channel.close()终止远程尾部。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接