后端开发|Python教程
paramiko,python,远程控制
后端开发-Python教程
本篇文章主要介绍了python的paramiko模块实现远程控制和传输示例,非常具有实用价值,需要的朋友可以参考下
java支付源码,VScode怎么新建源代码,Ubuntu慢速键,tomcat运维问题,爬虫系统安装,php客户端缓存,黄石房地产seo推广,织梦网站手机版首页,织梦wap免费模板lzw
本文介绍了python的paramiko模块实现远程控制和传输示例,分享给大家,具体如下:
网站源码密码文件,vscode查看svn历史,ubuntu键盘ctrl,was正常 tomcat错误,sqlite不支持高并发,爬虫爬到的图片下次运行就没了,日程管理 php,杭州seo培训网,个人日记本网站源码,我的网站模板下载lzw
1 安装
棋牌 源码 下载,vscode画逻辑框图,ubuntu安装imod,tomcat远程关闭,sqlite数据库中文转换,为啥爬虫爬取页面源代码不全,php strftime,北辰seo哪家值得信赖,如何制作qq号网站源码,ecshop运费模板设置lzw
sudo pip install paramiko
2 ssh实现远程控制
#LINUX下执行shellssh username@ip #输入密码后就可以对远程机器进行操作ssh username@ip command #输入密码后远程机器就执行command
ssh运行后,想退出,可以kill掉ssh进程。
3 paramiko实现ssh
import paramikohostname = 10.1.111.111username = ootpassword = 111111port = 22 #整数不是字符串paramiko.util.log_to_file(paramiko.log)ssh = paramiko.SSHClient()ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) #允许连接不在know_hosts文件中的主机ssh.connect(hostname=hostname,port=port,username=username,password=password)stdin, stdout, stderr = ssh.exec_command("ls") #远程执行shell命令print(stdout.readlines()) #输出回显结果ssh.close()
exec_command命令,以分号;分隔表示先后执行两个命令;可以传入多个参数; exec_command为单个会话,执行完成之后会回到登录时的缺省目录,如下:
a=~/Videos=aaassh.exec_command(cd %s;mkdir %s\%(a,b)) #aaa在a目录下ssh.exec_command(mkdir aaa) #aaa在缺省目录下
远端执行命令时如果有交互,可以这样用 stdin.write(“”)来完成。
注意:
(1)sudo后要加-S,表示从stdin接收密码;
(2)stdin.write(‘password\n’)最后要加\n作为命令的结束,否则服务器一直等待;
(3) flush()写入的缓冲( flush() any buffer you’re writing to )
stdin, stdout, stderr = ssh.exec_command(sudo -S ls)stdin.write(password\n)stdin.flush()
可以利用多进程或线程可以批量执行命令:
import paramikoimport threadingdef ssh_cmd(ip,port,username,passwd,cmd): ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect(ip,port,username,passwd) for m in cmd: stdin, stdout, stderr = ssh.exec_command(m) print(stdout.readlines()) ssh.close()if __name__==\__main__: cmd = [ls,ifconfig]a=threading.Thread(target=ssh_cmd,args=(ip,port,username,passwd,cmd)) a.start() a.join()
4 远程传输文件
scp从本地服务器复制到远程服务器
scp local_file remote_username@remote_ip:remote_file
指定了用户名,命令执行后需要输入用户密码;如果不指定用户名,命令执行后需要输入用户名和密码; 从远处复制文件到本地
scp remote_username@remote_ip:remote_file local_file
5 paramiko实现远程传输文件
新建一个SFTPClient对象,该对象复用之前的SSH连接,因此,我们使用sftp传输文件时,不需要再次进行用户认证。实现文件
上传:
sftp = paramiko.SFTPClient.from_transport(ssh.get_transport())#sftp = ssh.open_sftp() #两者选其一即可sftp.put(bb.c,aaa.c) #文件上传并重命名sftp.close()
或者以下实现文件上传和下载:
import paramikot=paramiko.Transport((hostname,port))t.connect(username=username,password=password)sftp = paramiko.SFTPClient.from_transport(t) sftp.put(bb.c,aaa.c) #文件上传并重命名sftp.get(m.py, mm.py)#文件下载并重命名t.close()
官方文档