python paramiko

作者:弋江区易采办公设备经营部  发布时间:2017-09-02 11:20:59
python paramiko

root@ubuntu:~/paramiko# pip install paramiko

测试是否安装成功

>>> import paramiko

>>>

二、上传文件到远程服务器

原理:通过SFTPClient类根据SSH传输协议的sftp会话,实现远程文件上传、下载等操作。实现远程文件上传、下载。

任务:10. 1.101.187向10.1.101.186发送文件。

10.1.101.187 目录/root/paramiko 有三个文件 paramikosend.py test test.tar

10.1.101.186 目录/root/paramiko 开始为空文件夹

执行python paramikosend.py,代码如下

root@ubuntu:~/paramiko# cat paramikosend.py import paramiko,datetime,os hostname = '10.1.101.186' username = 'root' password = '123456' port = 22 local_dir = '/root/paramiko' remote_dir = '/root/paramiko' try: t=paramiko.Transport((hostname,port)) t.connect(username=username,password=password) sftp = paramiko.SFTPClient.from_transport(t) files = os.listdir(local_dir) for f in files: sftp.put(os.path.join(local_dir,f),os.path.join(remote_dir,f)) t.close() except Exception: print "connect error!"

三、从远程服务器下载文件

原理:通过SFTPClient类根据SSH传输协议的sftp会话,实现远程文件上传、下载等操作。实现远程文件上传、下载。

任务:现在10.1.101.186的/root/paramiko/temp186目录有两个文件,将其下载到10.1.101.187的/root/paramiko/temp187目录。

执行 python paramikoget.py ,代码如下

root@ubuntu:~/paramiko# cat paramikoget.py import paramiko,datetime,os hostname = '10.1.101.186' username = 'root' password = '123456' port = 22 local_dir = '/root/paramiko/temp187' remote_dir = '/root/paramiko/temp186' try: t=paramiko.Transport((hostname,port)) t.connect(username=username,password=password) sftp = paramiko.SFTPClient.from_transport(t) files = sftp.listdir(remote_dir) #这里需要注意,列出远程文件必须使用sftp,而不能用os for f in files: sftp.get(os.path.join(remote_dir,f),os.path.join(local_dir,f)) t.close() except Exception: print "connect error!"

四、执行命令测试

原理:通过SSHClient类执行命令。SSHClient类是SSH服务会话的高级表示,封装了传输、通道以及SFTPClient的校验、建立方法,通常用于执行命令。

任务:通过10.1.101.187连接到10.1.101.186,然后进入目录/root/paramiko,创建一个目录lxy。

执行python paramikocommand.py,代码如下:

root@ubuntu:~/paramiko# cat paramikocommand.py #!/usr/bin/python import paramiko hostname = '10.1.101.186' username = 'root' password = '123456' port = 22 ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect(hostname=hostname,port=port,username=username,password=password) stdin, stdout, stderr = ssh.exec_command("cd /root/paramiko;mkdir lxy") print stdout.readlines() ssh.close()

结果:

命令中也可以带参数:

root@ubuntu:~/paramiko# cat paramikocommand.py #!/usr/bin/python import paramiko hostname = '10.1.101.186' username = 'root' password = '123456' port = 22 name='testcmd' ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect(hostname=hostname,port=port,username=username,password=password) stdin, stdout, stderr = ssh.exec_command("cd /root/paramiko;mkdir %s" %name) print stdout.readlines() ssh.close()

Note:exec_command为单个会话,执行完成之后会回到登录时的缺省目录。

比如执行下面两句。

stdin, stdout, stderr = ssh.exec_command("cd /root/paramiko;mkdir %s" %name)

stdin,stdout,stderr = ssh.exec_command('mkdir haha')

haha目录最终是在缺省的/root目录下新建的,而不是/root/paramiko目录。

五、python远程执行操作的其他开源模块

fabric:fabric是封装了paramiko模块来实现ssh来传输文件的。

pexpect:也可以实现ssh 登录到某个用户指定的主机上,运行某个用户指定的命令

企业建站2800元起,携手武汉肥猫科技,做一个有见地的颜值派!更多优惠请戳:武汉网站建设 http://www.feimao666.com

  • 上一篇:武汉肥猫科技|有颜值又有见地的网站总是经久不衰
  • 下一篇:最后一页
  •