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()