背景需求:有一台linux编译服务器,需要在编译完成后自动将该文件部署到远程window的tomcat下并重启该服务器!!!
解决方案:telnet+pscp
解决过程:首先linux编译机器想要触发window的批处理,在这里选择使用window的telnet服务
linux下的脚本如下:stop_9095.py(停止服务并触发远程脚本del_ROOT_9095.bat)
#!/usr/bin/env python
def auto_telnet(ip, username, password, finish):
import telnetlib
# 连接Telnet服务器
tn = telnetlib.Telnet(Host, port=23)
tn.set_debuglevel(1)
#输入用户名
tn.read_until('login: ')
tn.write(username + '\r\n')
#输入密码
tn.read_until('password: ')
tn.write(password + '\r\n')
#登录执行命令
tn.read_until(finish)
tn.write('net stop tomcat9095\r\n')
tn.read_until(finish)
tn.write('pushd E:\Java\deploy\r\n')
tn.read_until(finish)
tn.write('del_ROOT_9095.bat\r\n')
tn.read_until('finished copy')
tn.write('net start tomcat9095\r\n')
tn.read_until(finish)
time.sleep(1)
tn.close()
if __name__=='__main__':
ip = '192.168.1.30'
username = 'administrator'
password = '123456'
finish = '>'
auto_telnet(ip, username, password, finish)
远程服务器下批处理:del_ROOT_9095.bat (删除原有文件夹远程上传文件)
@echo off
set tomcat_dir=%cd%\..\cluster\tomcat_9095\bin
pushd %tomcat_dir%\..\webapps
if exist eye (
call rmdir /s /q eye/*
)
pscp -l root -pw 123456 -r root@192.168.1.43:/home/deploy/tomcat9095/code/eye/* E:\Java\cluster\tomcat_9095\webapps\eye\
echo "finished copy"
pause