【问题标题】:Send ctrl-C to OSX Terminal in an SSH Session in Python在 Python 的 SSH 会话中将 ctrl-C 发送到 OSX 终端
【发布时间】:2013-12-08 16:38:08
【问题描述】:

This solution 要求我在与我试图终止的进程相同的机器上运行 Python。

但是,我在本地运行 Python,并在终端中通过 SSH 运行该进程。在这种情况下如何发送终止命令?

【问题讨论】:

  • 如果你只想发送 ctrl-C、ssh 并使用进程 ID 杀死
  • 啊。 Python脚本中的SSH?比我希望的要多一点,因为它需要身份验证。我可以使用 Applescript 发送终端命令。我想知道是否有用于 ctrl-C 的 Applescript Terminal 命令。
  • python 中的 SSH 你可以检查模块 pexpect
  • 我想弄清楚你想要这样做的可能原因。您能解释一下为什么要尝试使用 python 通过 ssh 控制远程进程吗?有什么原因不能在远程服务器上运行 python 脚本吗?
  • 我正在远程编辑程序,使用 Cyber​​duck 进行 SFTP 和 Sublime Text 2 进行编辑。我在 Alfred 上有一个热键,可以将 make 然后 make run 发送到终端(cmd+M),这样我就不必使用 cmd+tab 到终端了。我正在重构代码,只是检查新代码没有破坏任何东西。 make run 启动程序运行一长串输出,只要它这样做,我就知道它没有损坏。我希望能够使用另一个简单的 Alfred 热键(例如 cmd+shift+C)来终止程序,这样我就不必将焦点切换到终端来停止它并且可以继续编程。

标签: python macos ssh


【解决方案1】:

在使用服务器设置ssh-keygen 后使用pexpect 进行SSH,这样它就不需要您机器的密码:

import pexpect

ssh_command = 'ssh user@your.server.com'
child = pexpect.spawn(ssh_command)

default_prompt = 'user@server:~/# '
child.expect(default_prompt)

kill_command = 'killall process_name'
child.sendline(kill_command) 

如果您在default_prompt 行之前不使用ssh-keygenyou will need to work your password login into the pexpect script

只需使用 Alfred 将此脚本附加到热键(例如 ctrl+alt+c)即可。

【讨论】:

    猜你喜欢
    • 2016-01-22
    • 1970-01-01
    • 2013-04-06
    • 2014-12-27
    • 2011-10-09
    • 2016-06-06
    • 2016-06-26
    • 2017-06-20
    • 1970-01-01
    相关资源
    最近更新 更多