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