paramiko遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接,可以实现远程文件的上传,下载或通过ssh远程执行命令。
>>> import paramiko >>> ssh = paramiko.SSHClient() >>> ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 允许连接不在known_hosts文件中的主机(正常情况用ssh的话,若known_hosts文件里没有对应主机名,会询问用户是否确认连接该主机,确认之后会把主机名加到known_hosts文件) >>> ssh.connect(hostname='192.168.0.6', port=22, username='root', password='asdasd') >>> stdin, stdout, stderr = ssh.exec_command('ls') # 标准输入,标准输出,标准错误 >>> print stdout.read() 1.sql 2.txt 666.txtx 777.txtx a1 account_move.sql anaconda-ks.cfg b0 b1 b2 cycle_checking_13 data_rs_partno_checktable.sql db_calc_price_1366674_all_sql.zip ex_account.sql git-jiayou4 hahaha.txt haha.txt icbase-v3_1554112_all_sql.zip jiayou3test.sql jiayou4 jiayou_mini_db.sql jy8866.sh liangdongyang nohup.out percona-toolkit-3.0.12-1.el7.x86_64.rpm product_limit.sql release383 rosipenv shuzujilu start_jybase.sh up_jiayou383.sh up_pro.py wkhtmltox-0.12.4_linux-generic-amd64.tar.xz wkhtmltox-0.12.4_linux-generic-amd64.tar.xz.1 xqhtest
文件传输
scp -rp -P端口号 待传输文件的文件路径 用户名@IP地址:传输的目标路径
scp -rp skr.mengmeng root@192.168.0.6:/
用paramiko实现:
>>> import paramiko >>> transport = paramiko.Transport(('192.168.0.6', 22)) >>> transport.connect(username='root', password='asdasd') >>> sftp = paramiko.SFTPClient.from_transport(transport) >>> sftp.put('skr.mengmeng', '/skr.mengmeng') # sftp.get('target_path', 'local_path')将target_path下载到本地local_path <SFTPAttributes: [ size=0 uid=0 gid=0 mode=0100644 atime=1540202263 mtime=1540202263 ]>
>>> transport.close()