學習了很久的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