1、安装组件
yum install openssl openssl-devel python-dev pycrypto -y
yum install zlib-devel zlib (必须安装,不安装会报错)
安装zlib-devel需要对python3.5进行重新编译安装:
cd /usr/local/src/Python-3.5.1
./configure
make & make install
2、安装setuptools-19.6:
wget --no-check-certificate https://pypi.python.org/packages/source/s/setuptools/setuptools-19.6.tar.gz#md5=c607dd118eae682c44ed146367a17e26
tar -zxvf setuptools-19.6.tar.gz
cd setuptools-19.6
python3 setup.py build
python3 setup.py install
3、安装paramiko
下载:http://pan.baidu.com/s/1dFKYNq5 密码:y2mltar zxvf paramiko-1.14.0.tar.gz
cd paramiko-1.14.0
python3 setup.py build
sudo python3 setup.py install
4、报这个错的话:
ImportError: No module named 'cryptography'
安装cryptography:
pip3 install cryptography
没有pip3的话在usr/local/Python3.5.1/bin/目录找
ssh功能
#ssh功能
import paramiko
#创建ssh对象
ssh=paramiko.SSHClient()
#允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
#连接服务器
ssh.connect(hostname='localhost',port=22,username='root',password='123456')
#执行命令
cmd=input("请输入命令:").strip()
stdin,stdout,stderr=ssh.exec_command(cmd) #stdin标准输入,输入命令 stdout标准输出 stderr输出错误 只能输出一种
#获取执行命令结果
result=stdout.read()
err=stderr.read()
print(result.decode())
print(err.decode())
#关闭连接
ssh.close()
ftp功能
import paramiko
#建立通道实例
transport=paramiko.Transport(('192.168.0.6',22))
transport.connect(username="root",password='123456')
#创建sftp实例
sftp=paramiko.SFTPClient.from_transport(transport)
#将本地文件location.py传给服务器test.py
sftp.put('/tmp/location.py','/root/test.py')
#将remove_path下载到本地local_path
sftp.get('/tmp/remove_path','/root/local_path')
transport.close()
ssh功能基于公钥
import paramiko
private_key=paramiko.RSAKey.from_private_key_file('/root/.ssh/id_rsa') ##私钥路径
#创建ssh对象
ssh=paramiko.SSHClient()
#允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
#连接服务器
ssh.connect(hostname='192.168.0.6',port=22,username='root',pkey=private_key)
#执行命令
cmd=input("请输入命令:")
stdin,stdout,stderr=ssh.exec_command(cmd) #stdin标准输入,输入命令 stdout标准输出 stderr输出错误 只能输出一种
#获取执行命令结果
result=stdout.read()
err=stderr.read()
print(result.decode())
print(err.decode())
#关闭连接
ssh.close()
ftp基于公钥
import paramiko
private_key=paramiko.RSAKey.from_private_key_file('/root/.ssh/id_rsa') #私钥路径
#建立通道实例
transport=paramiko.Transport(("192.168.0.6",22))
transport.connect(username="root",pkey=private_key)
#创建sftp实例
sftp=paramiko.SFTPClient.from_transport(transport)
#将本地文件location.py传给服务器test.py
sftp.put('/tmp/location.py','/root/test.py')
#将remove_path下载到本地local_path
sftp.get('/tmp/remove_path','/root/local_path')
transport.close()