mydeer
就像我们从来没有来过这里,但这种感觉似曾相识。
python ssh实现远程自动化执行命令

借助python的 paramiko 库,实现ssh登录,进而完成执行命令。

1.安装:

pip install paramiko

若安装失败,参考失败建议,如升级pip,笔者遇到了。

2.编写ssh执行脚本

新建  sshobj.py,笔者实现了 nohup 和 非nohup模式,nohup用于多机器安装基础环境,无需等待的情况。

import paramiko
import time

class sshCfg:
        def __init__(self, hostname, port, username, password):
                self.hostname=hostname
                self.port=port
                self.username=username
                self.password =password

def ssh_cmd(ssh_config, cmd, result_print=None, nohup=False):
        ssh = paramiko.SSHClient()
        ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        ssh.connect(hostname=ssh_config.hostname, port=ssh_config.port, username=ssh_config.username, password=ssh_config.password)

        print("\033[1;32m[\' ###################### %s@%s: %s\'] \033[0m\n" %
 (ssh_config.hostname, ssh_config.username, cmd))

        if nohup:
                invoke = ssh.invoke_shell()
                invoke.send("nohup %s > /dev/null & \n" % cmd)
                time.sleep(1)
        else:
                stdin, stdout, stderr = ssh.exec_command(cmd)
                print(stdout.read().decode())
        ssh.close()


ip = '1.23.23.56'
username = 'userroot'
password = 'userpasswword'
command = "ls -al"

cfg = sshCfg(ip,22,username,password)
ssh_cmd(cfg, command, result_print=True, nohup=False)

3.执行ssh命令

修改代码最后的  ip username password command即可执行

python sshobj.py


拓展:

可将ssh封装为一个python库,使用的时候初始化ip user pwd cmd变量即可。

如自动化预装机器环境,批量操作服务器等。

<< 上一篇 Centos7安装pip MySQL开启慢查询日志-调优、监控必备 下一篇 >>
文章标签
随意 | Created At 2014 By William Clinton | 蜀ICP备14002619号-4 |