python远程执行Linux命令

 

1、安装paramiko包

pip3 install paramiko

 

2、代码详解

部署环境执行直接用os.popen

import os
"""
当前环境执行shell
"""
def exeShell(reqdata):
    print(reqdata)
    tmp = os.popen(reqdata).readlines()
    tmp = tmp[0].replace('\n', '')
    return tmp

远程环境执行用ssh

import paramiko
"""
reqdata  :执行语句
hostname : ip
username : 环境登录账号
password :环境登录密码
"""
def exeShellSHH(reqdata,hostname,username,password):
    print(reqdata)

    #创建ssh对象
    ssh = paramiko.SSHClient()
    #允许连接不在know_hosts文件中的主机
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    #连接服务器
    ssh.connect(hostname=hostname,port=22,username=username,password=password)
    #执行命令
    stdin,stdout,stderr = ssh.exec_command(reqdata)

    #获取命令结果
    result = stdout.read()
    #将types转为str
    result = result.decode('UTF-8').replace('\n', '')

    ssh.close()
    return result

判断执行的环境是否是部署环境

def isIplocal(ip):
    shell = "ifconfig |grep eth0 -A 1|tail -n 1|awk -F ':' '{print $2}'|awk '{print $1}'"
    iplocal = exeShell(shell)

    if ip == iplocal:
        return True
    else:
        return False

 

posted @ 2021-12-15 11:28  sugoi  阅读(489)  评论(0)    收藏  举报