先说下事件。。。
前两天有一个环境要用到从其他设备远程拷贝文件过来,其实这个本来可以用expect脚本来写,但是有点麻烦,而且有时候会有问题,就想到了python的paramiko,于是就开始安装,比较坑的是所属的环境不能上网,只能源码安装,摸索了一下,写下来记录一下,希望这个文档也能给他人带来帮助。
直接上干货了。。。
1.安装python2.7环境
https://www.python.org/downloads/
tar zxvfp Python-2.7.9.tar.gz
./configure
make && make install
2.安装相关软件
#注:少一不可,经过多次试验。。。
setuptools
https://github.com/pypa/setuptools/
tar zxvfp setuptools-7.0.tar.gz
cd setuptools-7.0
python2.7 setup.py install
这个软件没办法不装,因为paramiko这个软件,主要用来装ecdsa,当然是可以上网的情况下,他 会自动用easy_install的方式或者pip的方式自动安装,没网的话需要手动安装ecdsa。
ecdsa
https://github.com/warner/python-ecdsa/tree/python-ecdsa-0.10
tar zxvfp ecdsa-0.10.tar.gz
cd ecdsa-0.10
python2.7 setup.py install
PyCrypto是一个免费的加密算法库,支持常见的DES、AES加密以及MD5、SHA各种HASH运算。
https://github.com/dlitz/pycrypto
tar zxvfp pycrypto-2.6.tar.gz
cd pycrypto-2.6
python2.7 setup.py build && python2.7 setup.py install
paramiko
paramiko模块是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接
https://pypi.python.org/pypi/paramiko
unzip paramiko-1.17.1.zip
cd paramiko-1.17.1
python2.7 setup.py install
上图报错先忽略
验证先:
[root@localhost tools]# python2.7
Python 2.7.9 (default, Aug 1 2016, 05:52:40)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-55)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import paramiko
如果没有报错为正常安装,写个脚本测试一下
[root@localhost scripts]# echo 1234567890 > /root/test.txt
[root@localhost scripts]# cat test.py
#!/usr/bin/env python2.7
#-*-coding:utf-8-*-
import paramiko
USER = 'root'
PASSWORD = 'root'
HOST = '192.168.153.131'
PORT = '22'
remote_path = '/tmp/test.log'
local_path = '/root/test.txt'
for line in open('/root/test.txt'):
test = paramiko.Transport("192.168.153.131","22")
test.connect(username=USER,password=PASSWORD)
test1 = paramiko.SFTPClient.from_transport(test)
test1.put(local_path,remote_path)
test.close
[root@localhost scripts]# ./test.py
[root@localhost scripts]# cat /tmp/test.log
1234567890
好了,测试成功,大功告成!