Python Paramiko模块安装和使用
1、简介
大家会发现,常见的解决方法都会需要对远程服务器必要的配置,如果远程服务器只有一两台还好说,如果有N台,还需要逐台进行配置,或者需要使用代码进行以上操作时,上面的办法就不太方便了。
使用paramiko可以很好的解决以上问题,比起前面的方法,它仅需要在本地上安装相应的软件(python以及PyCrypto),对远程服务器没有配置要求,对于连接多台服务器,进行复杂的连接操作特别有帮助。
2、安装
安装paramiko有两个先决条件,python和另外一个名为PyCrypto的模块。
通常安装标准的python模块,只需要在模块的根目录下运行:
1
2
|
python
setup
.
py
build
python
setup
.
py
install
|
备注:安装前先检查是否安装gcc(yum -y install gcc)
2.1 PyCrypto安装
1
2
3
4
|
wget
http
:
//ftp.dlitz.net/pub/dlitz/crypto/pycrypto/pycrypto-2.6.tar.gz
tar
-
zxvf
pycrypto
-
2.6.tar.gz
cd
pycrypto
-
2.6
/
python
setup
.
py
build
&&
python
setup
.
py
install
|
测试:
1
|
python
>>
import
Crypto
|
(编译时报错:error: command 'gcc' failed with exit status 1;这是因为缺少python-dev的软件包,所yum -y install python-devel)
2.2 paramiko安装
1
2
3
4
5
|
wget
http
:
//www.lag.net/paramiko/download/paramiko-1.7.7.1.tar.gz
tar
xvzf
paramiko
-
1.7.7.1.tar.gz
cd
paramiko
-
1.7.7.1
/
python
setup
.
py
build
&&
python
setup
.
py
install
Crypto
error
:
'module'
object
has
no
attribute
'HAVE_DECL_MPZ_POWM_SEC'
|
测试:
1
2
|
python
>>
import
paramiko
(
Crypto
error
:
'module'
object
has
no
attribute
'HAVE_DECL_MPZ_POWM_SEC'
|
找到 /usr/lib/python2.7/site-packages/Crypto/Util/number.py
把
1
|
if
_fastmath
is
not
None
and
not
_fastmath
.
HAVE_DECL_MPZ_POWM_SEC
:
|
注释了
1
|
#if _fastmath is not None and not _fastmath.HAVE_DECL_MPZ_POWM_SEC:
|
3、使用
3.1 执行远程命令
1
2
3
4
5
6
7
8
9
|
#!/usr/bin/python
import
paramiko
ssh
=
paramiko
.
SSHClient
(
)
ssh
.
set_missing_host_key_policy
(
paramiko
.
AutoAddPolicy
(
)
)
ssh
.
connect
(
"某IP地址"
,
22
,
"用户名"
,
"口令"
)
stdin
,
stdout
,
stderr
=
ssh
.
exec_command
(
"你的命令"
)
print
stdout
.
readlines
(
)
ssh
.
close
(
)
|
3.2 上传文件到远程
1
2
3
4
5
6
7
8
9
10
|
#!/usr/bin/python
import
paramiko
t
=
paramiko
.
Transport
(
(
"某IP地址"
,
22
)
)
t
.
connect
(
username
=
"用户名"
,
password
=
"口令"
)
sftp
=
paramiko
.
SFTPClient
.
from_transport
(
t
)
remotepath
=
'/tmp/test.txt'
localpath
=
'/tmp/test.txt'
sftp
.
put
(
localpath
,
remotepath
)
t
.
close
(
)
|
3.3 从远程下载文件
1
2
3
4
5
6
7
8
9
10
|
#!/usr/bin/python
import
paramiko
t
=
paramiko
.
Transport
(
(
"某IP地址"
,
22
)
)
t
.
connect
(
username
=
"用户名"
,
password
=
"口令"
)
sftp
=
paramiko
.
SFTPClient
.
from_transport
(
t
)
remotepath
=
'/tmp/test.txt'
localpath
=
'/tmp/test.txt'
sftp
.
get
(
remotepath
,
localpath
)
t
.
close
(
)
|
收 藏
成长的对话版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!