python paramiko外部传参和内部调用命令的方法
学习了很久的python,但在工作中使用的时候,却发现不知道怎么传参进入到python中执行,所以这两天就研究 了python args怎么将外部参数传入到python中执行
1.首先使用python传统的内部函数调用的方式,看看函数调用命令怎么执行的,在对比外部args传参
import paramiko import sys import os hostname = '192.168.1.202' port = 22 username = 'root' password = '123456' def shells(): #引入内部方法命令执行 commds() #开启日志 paramiko.util.log_to_file('paramiko.log') s = paramiko.SSHClient() #s.load_host_keys() #不适用公钥登陆 s.set_missing_host_key_policy(paramiko.AutoAddPolicy()) s.connect(hostname, port, username, password) #print(commds()) for i in commds().rstrip().split(','): #循环commds里面得ls 和ifconfig命令,本来是一串字符串得, # 使用rstrip和split以,号 分割,是他们编程列表,循环 print(i) #打印循环好的列表 ls,ifconfig stdin, stdout, stderr = s.exec_command(i) #分别执行这两个命令 print(stdout.read().decode()) s.close() def commds(): #填写命令 com = 'ls' +','+ 'ifconfig' #返回命令给shells方法调用 return com if __name__ == '__main__': shells()
2.执行结果
3.第二中方法,就是将外部直接单个执行一个命令或者批量执行多个命令,这样就不用固定的命令执行,每次运行都可以将自己要想的命令添加到后面执行
import paramiko import sys import os hostname = '192.168.1.202' port = 22 username = 'root' password = '123456' def shells(args): #从外部调用脚本参数 例如: python paramiko_demo.py ls ifconfig #开启日志 paramiko.util.log_to_file('paramiko.log') s = paramiko.SSHClient() #s.load_host_keys() #不适用公钥登陆 s.set_missing_host_key_policy(paramiko.AutoAddPolicy()) s.connect(hostname, port, username, password) #print(commds()) for i in args: print(i) #打印循环好的列表 ls,ifconfig stdin, stdout, stderr = s.exec_command(i) #分别执行这两个命令 print(stdout.read().decode()) s.close() if __name__ == '__main__': args=sys.argv shells(args)
执行单个命令 (该脚本有些缺陷,但是不影响效果展现哈)
python paramiko_demo.py ls
执行多个命令
python paramiko_demo.py ls ifconfig
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
2018-08-23 git 报错git-upload-pack 解决方法