远程ssh自动化安装卸载脚本(python)
这是由python写的脚本,可以通过ssh远程安装和卸载软件
完整代码
import paramiko
# 获取远程服务器信息
host = ''#此处修改远程ip
username = ""#用户名
password = "" # 密码
import pexpect
password_local="glp.143257"#本地的密码,不一定会用到
install_pack="SunloginClient_11.0.1.44968_amd64.deb"#安装的包的名字
uninstall_app=""=""#卸载的包名字
def scp_file_ma_to_lo(install_pack):
cmd = 'scp -r %s worker@192.168.100.99:/home/worker' % (install_pack)
proc = pexpect.spawn(cmd)
idx = proc.expect(['yes/no', 'password', pexpect.TIMEOUT], timeout=3)
if 0 == idx:
proc.sendline('yes')
proc.expect('password')
proc.sendline('uisee')
idx2 = proc.expect([pexpect.EOF, pexpect.TIMEOUT], timeout=30)
if 0 == idx2:
proc.kill(0)
if 1 == idx2:
proc.kill(0)
assert False, 'wifi upload 100M file timeout!'
if 1 == idx:
proc.sendline('uisee')
idx2 = proc.expect([pexpect.EOF, pexpect.TIMEOUT], timeout=30)
if 0 == idx2:
proc.kill(0)
if 1 == idx2:
proc.kill(0)
assert False, 'wifi upload 100M file timeout!'
if 2 == idx:
proc.kill(0)
assert False, 'can not connect to wifi ip [%s]!' % ip_net
def app_install(install_pack,host,username,password):
#
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname=host, username=username,
password=password) # 获取安装程序的名称和位置 program_name = input("请输入要安装的程序名称:")
# 执行安装程序命令
command = f"sudo apt-get install {install_pack} -y"
command = f"scp -r SunloginClient_11.0.1.44968_amd64.deb worker" \
f"@192.168.100.98:~/"
stdin, stdout, stderr = ssh.exec_command(command) # 输入sudo密码
stdin.write(f"uisee\n")
stdin.flush() # 打印命令执行结果
print(stdout.read().decode())
print(stderr.read().decode()) # 关闭SSH连接
ssh.close()
#sudo dpkg -r SunloginClient
def app_uninstall(uninstall_app,host,username,password):
# 获取远程服务器信息
#
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname=host, username=username,
password=password) # 获取安装程序的名称和位置 program_name = input("请输入要安装的程序名称:")
# 执行安装程序命令
command = f"sudo apt-get remove {uninstall_app} -y"
stdin, stdout, stderr = ssh.exec_command(command) # 输入sudo密码
stdin.write(f"uisee\n")
stdin.flush() # 打印命令执行结果
print(stdout.read().decode())
print(stderr.read().decode()) # 关闭SSH连接
ssh.close()
scp_file_ma_to_lo(install_pack)
app_install(install_pack,host,username,password)
#app_uninstall(uninstall_app,host,username,password)卸载一般用不到
首先第一步你要有paramiko
pip3 install paramiko
然后修改ip等就可以远程访问,记住ip是目标主机的ip,卸载时你的包的名字是和安装时不同的