使用python在远程服务器中执行命令

使用python在远程服务器中执行命令,python,Python,我是python的新手。最近我需要用python执行一些远程命令。所以我首先连接到服务器。我想我会在成功连接到远程服务器后执行该命令。 但我在这里面临着一个奇怪的问题(从某种意义上说,我没有通过谷歌搜索错误得到任何帮助) 我通过提供用户和密码手动连接到服务器 > ssh root@atvtsXXXX -X root@atvtsXXXX's password: Last login: Thu Jul 9 10:05:37 2015 from 150.132.42.67 [root@atvt

我是python的新手。最近我需要用python执行一些远程命令。所以我首先连接到服务器。我想我会在成功连接到远程服务器后执行该命令。 但我在这里面临着一个奇怪的问题(从某种意义上说,我没有通过谷歌搜索错误得到任何帮助)

我通过提供用户和密码手动连接到服务器

> ssh root@atvtsXXXX -X
root@atvtsXXXX's password:
Last login: Thu Jul  9 10:05:37 2015 from 150.132.42.67
[root@atvtsXXXX ~]#
因此,您可以在上面看到,我可以使用ssh手动连接到服务器。 我听说paramica是python中的模块,可以用来连接到远程服务器并执行命令。因此我编写了一个小测试脚本来首先连接

> cat test.py
import paramiko
ssh = paramiko.SSHClient()
ssh.connect('atvtsXXXX', username='root',
    password='XXXXXX')
>
但当我执行脚本时,我得到以下错误:

> python test.py
Traceback (most recent call last):
  File "test.py", line 5, in <module>
    password='XXXXXX')
  File "/usr/lib/python2.6/site-packages/paramiko/client.py", line 277, in connect
    socket.getaddrinfo(hostname, port):
socket.gaierror: [Errno -2] Name or service not known
>
最近我需要用python执行一些远程命令

您还可以将
.py
文件放在要连接的服务器上,然后将
ssh
放在同一服务器上,并在那里运行代码。如果对您有用:

$ scp yourScript.py username@server.com:/path/yourScript.py # copy file to the server
$ ssh username@server.com # connect to the server
$ python /path/yourScript.py # run your python script on the server
最近我需要用python执行一些远程命令

您还可以将
.py
文件放在要连接的服务器上,然后将
ssh
放在同一服务器上,并在那里运行代码。如果对您有用:

$ scp yourScript.py username@server.com:/path/yourScript.py # copy file to the server
$ ssh username@server.com # connect to the server
$ python /path/yourScript.py # run your python script on the server
方式1: 使用ip地址而不是像atvtsxxx这样的域名,也许paramiko包的域名查找有问题。使用此命令查找ip地址

$nslookup atvtsXXXX 
方式2: 我建议您使用pexpect来执行此操作,pexpect称为系统的SSH命令,它非常易于使用。

方式1: 使用ip地址而不是像atvtsxxx这样的域名,也许paramiko包的域名查找有问题。使用此命令查找ip地址

$nslookup atvtsXXXX 
方式2:
我建议您使用pexpect来实现这一点,pexpect称为系统的SSH命令,它非常容易使用。

这里有一件奇怪的事情。您的错误显示为第5行,但只有4行
Paramiko有两个硬依赖项:纯Python ECDSA模块ECDSA和PyCrypto C扩展
您安装了它们吗?您是通过pip安装Paramiko的吗?这取决于您正在尝试实现什么,或者可能会派上用场…@Rishav。。我不知道那件事。这些是我们为完成开发任务而提供的服务器。您的错误显示为第5行,但只有4行
Paramiko有两个硬依赖项:纯Python ECDSA模块ECDSA和PyCrypto C扩展
您安装了它们吗?您是通过pip安装Paramiko的吗?这取决于您正在尝试实现什么,或者可能会派上用场…@Rishav。。我不知道那件事。这些是我们为完成开发任务而提供的服务器。这是一个笑话:)。我想把远程命令的输出放在服务器上,用输出我必须执行更多的操作。@user1939168什么使你认为你不能这样做?我怎样才能在复制脚本的第一台服务器上得到脚本的输出?@user1939168为什么不写入文件,又是scp?这是个玩笑:)。我想把远程命令的输出放在服务器上,用输出我必须执行更多的操作。@user1939168什么使你认为你不能这样做?我如何才能在复制脚本的第一台服务器上获得脚本的输出?@user1939168为什么不写入文件,然后再次执行
scp