在网络上的另一台计算机上启动进程

时间:2014-11-21 07:43:23

标签: python linux windows automation network-programming

我需要启动一系列python脚本和/或其他Windows可执行文件。其中一些需要Windows系统,其他需要Linux机器。

目前有指定的机器来运行依赖于操作系统的程序。所以我知道我想在哪个地方开始这个项目。

有没有办法从python脚本,本地网络,另一台计算机上启动python脚本(或Windows可执行文件)(例如运行192.168.0.101:/dir/python_script_123.py

然后应该运行各种程序的脚本在伪代码中看起来像这样......

linuxip = 192.168.0.101
linuxparam = "required parameter"

winip = 192.168.0.201
winparam = "required parameter"

#option 1 (run all), 2(run linux only), 3(run windows only), 4(run local only)
option = 1

if option == 1:
    magic_things.run("linuxip:/dir/linux_script.py" + linuxparam)
    magic_things.run("winip:C:\\dir\\windows_prog.exe" + winparam)
    subprocess.call(["/dir/local_script.py","parameter"])
    subprocess.call(["/dir/another_local_script.py","parameter"])
elif option ==2:
    [...]

2 个答案:

答案 0 :(得分:4)

您需要从客户端连接到服务器计算机。如果是linux机器,你可以使用SSH。 见http://en.wikipedia.org/wiki/Secure_Shell

假设您运行的linux服务器上有ssh server,您可以使用包paramiko(http://docs.paramiko.org/en/1.15/api/client.html)连接到计算机并在那里运行脚本。

这看起来像这样:

from paramiko.client import SSHClient

client = SSHClient()
client.load_system_host_keys()
client.connect('linuxip', username='your_user', password='very_secret')
stdin, stdout, stderr = client.exec_command('python /home/your_user/your/path/to/scripty.py')

但是请注意,在脚本中存储密码并不是很安全,使用公钥/私钥认证可能更好(参见wiki文章)。

paramiko包还提供了ssh服务器的选项,所以这可能是你的Windows机器的解决方案,但我不太确定,因为我不再运行任何Windows机器。

希望这有用!

大卫

答案 1 :(得分:0)

在远程服务器上安装ipythonipython kernel,在本地计算机上安装ipythonipython kernel。然后,您可以使用以下设置连接到远程服务器:https://stackoverflow.com/a/48332182/4752883

运行使用subprocessos内置库在远程计算机上运行的任何程序。此外,这与操作系统无关,因此无论您的客户端/服务器是linux还是Windows还是Mac

,它都能正常运行