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变量即可。
如自动化预装机器环境,批量操作服务器等。