最新要闻
- 全球热推荐:今天春分白昼长了!全国春日地图出炉 看看春天到哪了
- 天天热议:汽车界“海底捞服务”!蔚来2023无忧服务发布:11600元/年
- 世界聚焦:重庆不再实行旧车置换:直接给予新车补贴 总计达3000万
- 世界报道:跨界做智能手表 比亚迪回应:消息属实 4月上新
- 对标《原神》!二次元开放世界游戏《鸣潮》开启测试招募
- 每日视点!海关总署:2月下旬以来我国出口用箱量持续增长
- 国产纯电跑车前途K50美国秽土转生:换了名称、LOGO还没变
- 全球最新:40万级领先行业两代 赵长江:腾势N7月销量将轻松破万 抢夺BBA用户
- 【全球速看料】沙县小吃旗舰店包间最低消费300元 网友:吃的完吗?
- 全球头条:英国小镇被巨型老鼠入侵:像猫一样大 悬崖都要被挖塌了
- 天天观天下!广东人睡觉时间全国最晚:“打工人”平均睡眠时长7.5小时
- 一根USB线就能偷走韩系车!现代、起亚已开始免费送车主方向盘锁
- 今日关注:再不发力就晚了!新一代奥迪Q5效果图曝光:内外大变革
- 当前时讯:沙尘暴黄色预警:北方超10省将迎来大范围沙尘天气
- 环球热点评!昔日巨头彻底退场!爱普生宣布所有相机明年终止官方服务
- 西部证券:3月20日融资买入1459.71万元,融资融券余额12.72亿元
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
全球新资讯:Paramiko_Linux
- Paramiko
- SSH
- 第一版
- 第二版
- 最终版
- SFTP
- 第一版
- 第二版
Paramiko
Paramiko官网
从官方的介绍当中我们起码得知以下几个信息:
(资料图片仅供参考)
- 此模块用于python3.6以上,目前python3.11左右,完全满足;
- 此模块用于实现sshv2协议的客户端和服务端;
- 核心类有五种,我们常用的是Clienttt SFTP两个类
SSH
接下来,我们通过paramiko实现通过sshv2连接服务器,并执行ip addr show然后从结果当中把IP地址通过python字符串切割的方式获取到。
实验环境:
- 服务端:192.168.80.130:kali linux
- 客户端:windows pycharm
# 服务端基本配置┌──(root㉿kali)-[~/Desktop]└─# systemctl enable --now sshroot㉿kali)-[~/Desktop]└─# ss -tnlp | grep 22 LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=1938,fd=3))LISTEN 0 128 [::]:22 [::]:* users:(("sshd",pid=1938,fd=4))┌──(root㉿kali)-[~/Desktop]└─# grep -i "permitrootlogin" /etc/ssh/sshd_config PermitRootLogin yes┌──(root㉿kali)-[~/Desktop]└─# systemctl restart ssh ┌──(root㉿kali)-[~/Desktop]└─# passwd New password: cba-123Retype new password: cba-123passwd: password updated successfully
┌──(root㉿kali)-[~/Desktop]└─# ip addr show eth0 | sed -n 3p | awk -F" " "{print $2}" | awk -F"/" "{print $1}"192.168.3.19 ┌──(root㉿kali)-[~/Desktop]└─# hostname -I192.168.3.19
在使用paramiko的过程当中我们可以选择通过shell命令进行切割字符串,也可以通过python进行切割,由于shelle命令只能在LINUX上执行,如果我们操作是网络设备那shell的命令不再好用了,所以我们打算使用python关于字符串的切割逻辑。
第一版
要求1:要求向linux发送一个df命令,并取回df的其结果。
要求2:要求向linux发送四个命令,并取会其结果
# 要求1import paramiko,timeport_number = 22username = "root"password = "cba-123"ip= "192.168.80.130"# 调用paramiko的sshclient类进行实例化ssh = paramiko.SSHClient()# 斩断ssh进程与文件系统之间的联系ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())# 这一步如果抓包去看的话,其实就是sshv2的连接过程# tcp三次握手、协商版本、交换密钥……、完事后直接四次挥手并不保持连接直接挥手ssh.connect( port=port_number, username=username, password=password, hostname=ip)# 向ssh发送一个df命令,然后通过标准的输入、输出和错误接收# 打印标准输出stdin, stdout, stderr = ssh.exec_command("df")out = stdout.read()print(out.decode())# 如果不带close最后的中断直接是reset,而使用了close之后最后中断就是平滑的三次握手ssh.close()"C:\Program Files\Python311\python.exe" G:\python2\第十章\test.py Filesystem 1K-blocks Used Available Use% Mounted onudev 1955888 0 1955888 0% /devtmpfs 398824 1380 397444 1% /run/dev/sda1 101639152 12773768 83656196 14% /tmpfs 1994112 0 1994112 0% /dev/shmtmpfs 5120 0 5120 0% /run/locktmpfs 398820 88 398732 1% /run/user/0
# 要求2的完成可以采取一个非常取巧的办法,把四个命令写到一块即可,如下所示:stdin, stdout, stderr = ssh.exec_command("hostname;df;ps aux|grep ssh;cat /etc/issue")
第二版
要求把上述代码写成函数,并连续执行四个命令,如下所示:
import paramiko, timeport_number = 22username = "root"password = "cba-123"ip = "192.168.3.19"def ssh(cmd): ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect( port=port_number, username=username, password=password, hostname=ip ) stdin, stdout, stderr = ssh.exec_command(cmd) out = stdout.read() print(out.decode()) ssh.close()ssh("df | head -1")ssh("hostname")ssh("cat /etc/issue")ssh("cat /etc/passwd | head -1")
其实像上图这么做是一个循环的过程,是完全的单线程操作,每一个命令都需要完成ssh的过程然后执行命令最后断开连接,这个过程要重复四次,这是特别浪费资源的,但我们在这里不去讨论多线程之类的,也不去关注性能,反正这么就完成任务;
其实代码还可以更简单一点,那就是把命令写在列表,然后循环列表,执行函数;
cmds = ["df|head -1","hostname","whoami","echo $PATH"]for cmd in cmds: ssh(cmd)
上述代码还有改进的地方,那就是在标准输入和输出那个地方,咱们可以使用三元运算:
stdin, stdout, stderr = ssh.exec_command(cmd)res,err = stdout.read(),stderr.read()result = res if res else errprint(result.decode())ssh.close()
最终版
import paramiko, timeport_number = 22username = "root"password = "cba-123"ip = "192.168.3.19"def ssh(cmd): ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect( port=port_number, username=username, password=password, hostname=ip ) stdin, stdout, stderr = ssh.exec_command(cmd) res,err = stdout.read(),stderr.read() result = res if res else err print(result.decode()) ssh.close()cmds = ["df|head -1","hostname","whoami","ecdho $PATH"]for cmd in cmds: ssh(cmd) "C:\Program Files\Python311\python.exe" G:\python2\第十章\test.py Filesystem 1K-blocks Used Available Use% Mounted onkalirootzsh:1: command not found: ecdho
SFTP
SFTP是在ssh建立连接的基础上,所以上述代码建立连接的部分,可以直接直接抄下来
第一版
将服务器的/etc/passwd文件下载到本地,命名为backup_hostname
# 将服务器的/etc/passwd文件下载到本地,命名为backup_hostnameimport paramiko, timeport_number = 22username = "root"password = "cba-123"ip = "192.168.3.19"ssh = paramiko.SSHClient()ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())ssh.connect( port=port_number, username=username, password=password, hostname=ip)# 在ssh的基础上附加或打开sftpsftp = ssh.open_sftp()sftp.get("/etc/hostname","backup_hostname")ssh.close()
第二版
将服务器的/etc下的passwd文件、fstab文件、issue文件全都下载下来;
# 下载import os.pathimport paramikodef sftp_get(file_path): port_number = 22 username = "root" password = "cba-123" ip = "192.168.3.19" ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect( port=port_number, username=username, password=password, hostname=ip ) # 在ssh的基础上附加或打开sftp sftp = ssh.open_sftp() file_in = file_path file_out = os.path.basename(file_in) sftp.get(file_in, file_out) ssh.close()files = ["/etc/passwd","/etc/issue","/etc/hostname"]for file in files: sftp_get(file)
多次执行会直接进行覆盖的。
这里面涉及到一个新的知识点,那就是取文件的基名,要通过os模块,非常容易理解。
# 上传import os.pathimport paramikodef sftp_put(put_file): port_number = 22 username = "root" password = "cba-123" ip = "192.168.3.19" ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect( port=port_number, username=username, password=password, hostname=ip ) # 在ssh的基础上附加或打开sftp sftp = ssh.open_sftp() file_in = put_file file_out = f"/tmp/{file_in}.back" sftp.put(file_in,file_out) ssh.close()files = ["passwd","issue","hostname"]for file in files: sftp_put(file)
关键词:
面试常考:C#用两个线程交替打印1-100的五种方法
全球新资讯:Paramiko_Linux
【全球独家】跟着字节AB工具DataTester,5步开启一个实验
英雄联盟自动关闭是什么意思?英雄联盟自动关闭怎么解决?
冒险岛的时空裂缝是什么?冒险岛怎么提升面板?
全球热推荐:今天春分白昼长了!全国春日地图出炉 看看春天到哪了
天天热议:汽车界“海底捞服务”!蔚来2023无忧服务发布:11600元/年
世界聚焦:重庆不再实行旧车置换:直接给予新车补贴 总计达3000万
世界报道:跨界做智能手表 比亚迪回应:消息属实 4月上新
对标《原神》!二次元开放世界游戏《鸣潮》开启测试招募
热点!如果设备不支持vulkan,就用swiftshader,否则就加载系统的vulkan的正确姿势(让程序能够智能的在vulkan-1.dll和libvk_s
【全球快播报】springboot使用easyExcel导出Excel表格以及LocalDateTime时间类型转换问题
《前端serverless 面向全栈的无服务器架构实战》读书笔记
每日视点!海关总署:2月下旬以来我国出口用箱量持续增长
国产纯电跑车前途K50美国秽土转生:换了名称、LOGO还没变
全球最新:40万级领先行业两代 赵长江:腾势N7月销量将轻松破万 抢夺BBA用户
【全球速看料】沙县小吃旗舰店包间最低消费300元 网友:吃的完吗?
全球头条:英国小镇被巨型老鼠入侵:像猫一样大 悬崖都要被挖塌了
OpenGL 图像 lookup 色彩调整
天天时讯:剑指 Offer 07. 重建二叉树(java解题)
为什么Redis不直接使用C语言的字符串?看完直接吊打面试官!
天天观天下!广东人睡觉时间全国最晚:“打工人”平均睡眠时长7.5小时
一根USB线就能偷走韩系车!现代、起亚已开始免费送车主方向盘锁
今日关注:再不发力就晚了!新一代奥迪Q5效果图曝光:内外大变革
当前时讯:沙尘暴黄色预警:北方超10省将迎来大范围沙尘天气
环球热点评!昔日巨头彻底退场!爱普生宣布所有相机明年终止官方服务
环球关注:论文解读TCPN
西部证券:3月20日融资买入1459.71万元,融资融券余额12.72亿元
环球速讯:中国罐头在海外多国热销:成为香饽饽
天天讯息:大反转!南京大学团队推翻美室温超导技术 复刻实验没发现超导现象
天天速看:又一致命真菌爆发:已遍布美国一半以上的州
天天微动态丨OPPO Find X6系列外观公布:拼接设计、后摄巨大
比亚迪汉唐冠军版发布会高能金句感受下 合资燃油车瑟瑟发抖
MAUI Blazor 加载本地图片的解决方案
每日热点:朴素系统优化思维的实践
焦点热文:债券通北向通2月成交规模环比增超三成 政金债跃升为最活跃券种
今日热讯:LCD荣光犹在!iQOO Z7开启预售:1599元起
全球观察:漫威后期制作总裁离职
当前通讯!2022年度个税汇算今起不用预约:多退少补你能退多少
移除雷达传感器后 特斯拉车祸数量上升:车主反映莫名刹车故障
快消息!读C#代码整洁之道笔记02_类、对象和数据结构及编写整洁函数
鲁抗医药:3月20日融资买入477.87万元,融资融券余额2.49亿元
全球速读:今年以来险企“补血”超340亿元 数百亿元补充资本“在路上”
世界观点:国际金融市场早知道:3月21日
铁矿石价格“非理性”上涨 监管层频频发声剑指价格炒作
天天最新:春分迎接春天:昼夜时间等长
2TB硬盘开车价400多 SSD便宜到没朋友:5大巨头流泪数钱
每日速递:读Java性能权威指南(第2版)笔记23_ 性能分析工具
焦点速讯:影响人类文明的“小方块” USB接口进化史
当前资讯!快来!我们发现了藏在新风空调里的“秘密”
当前速看:C++温故补缺(一):引用类型
要闻速递:【Visual Leak Detector】简介
Spotify 畅听全网高品质音乐
焦点热门:GPT-4外逃计划曝光!教授发现它正引诱人类帮助 网友:灭绝之门
天天快看点丨因禽流感爆发 阿根廷已扑杀70余万只禽类!
焦点!27款进口游戏版号获批!《赛马娘》《蔚蓝档案》等改名引热议
你相信吗?每天都有10多万人 学习流浪汉的生存技巧
环球今亮点!15年后 官方发布北京奥运福娃全新手办:五个一套440元
26种死法知乎_26种死法怎么样
天天速讯:织金县鸡场乡:防范电信诈骗,拉响反诈警报
Go 并发编程(一):协程 gorotine、channel、锁
vue和xml复习
Vue——vue2错误处理收集【七】
环球关注:iPhone开始在俄罗斯遭禁用了:不安全!苹果此前已在该国停售
焦点快看:填补空白!中国将首次开启海上二氧化碳封存
C# 探秘如何优雅的终止线程
行人车辆检测与计数系统(Python+YOLOv5深度学习模型+清新界面)
焦点播报:Spring IOC官方文档学习笔记(十四)之ApplicationContext的其他功能
如何上传一个npm包
中债金融终端上线“货币经纪行情”功能
瑞信风波由股及债 此前已有分析师提示“AT1”风险
Wii U和3DS在线游戏商店关闭前:玩家花15万328天买下所有游戏
2022年 全国坐火车的少了36.4%!高铁已达4.2万公里
环球热点!基于深度学习的口罩检测系统(Python+清新界面+数据集)
【环球新视野】自律|坚持,是因为不喜欢
Java内部类笔记整理
全球快资讯丨永磁同步电机驱动系统—相关方向思考
焦点要闻:HTTP 状态码与课程总结
日本东电直播用核污水养鱼 海外网友直言:留着自己吃吧
环球热点评!旗舰级LCD护眼屏+120W独此一款!iQOO Z7发布:1599元
全球热议:6000mAh同档位续航无敌!iQOO Z7x发布:1299元起
便宜卡终于有了!好队友抢跑:RTX 4070/4060来也
9999元 AOC爱攻新款48寸显示器上架:4K OLED屏、138Hz高刷
当前快讯:死亡细胞将登陆Android端
环球快看点丨波动数列
瑞银收购瑞信意外“引爆”AT1债券市场 对冲基金不计成本抛售避险
【世界新视野】抗早泄药物盐酸达泊西汀国内正式上市:效果最好!订单超4000万元
天天通讯!1994《小美人鱼》vs2023《小美人鱼》对比图火了:5月上映 你会看吗?
焦点消息!LCD党最好的选择!iQOO Z7定制旗舰级LCD屏:超级护眼
今日热闻!神秘光点划过美国加州夜空 专家:或为日本太空垃圾
【世界新要闻】正式签约石墨烯之父 超威电池三大单品发布
世界今热点:Python+selenium安装
全球即时看!【财经分析】“降准”落地利好信用债阶段表现 中期仍需关注多因素扰动风险
网传凯迪拉克中控屏行驶中弹窗广告 车主:烦死了
热点!多益网络:前女高管们利用网络水军造假 导致公司损失5亿元
全球即时看!速干短袖+短裤:骆驼运动套装79元狂促(300元大额券)
戴森空气净化耳机首发体验:6699元图一乐?
美知名媒体曝特斯拉大量负面:自动驾驶测试作假
焦点速看:这些AIGC工具有趣且实用
abc294G