python paramiko外部传参和内部调用命令的方法

给你一囗甜甜゛ 提交于 2019-11-28 08:06:28

import paramikoimport sysimport oshostname = '192.168.1.202'port = 22username = '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
    #args=args
    shells(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()

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!