from paramiko import SFTPClient, Transport, SSHClient, AutoAddPolicy
from sshtunnel import SSHTunnelForwarder
def mvn_clean(project_path: str) -> str:
pos_command = f'{project_path[:2]} & cd {project_path}'
result = os.popen(f'{pos_command} & mvn clean')
def mvn_package(project_path: str) -> str:
pos_command = f'{project_path[:2]} & cd {project_path}'
result = os.popen(f'{pos_command} & mvn package -f pom.xml')
def login_ssh_tunnel() -> SSHTunnelForwarder:
server = SSHTunnelForwarder(
('123.157.139.150', 12307),
ssh_password='CIIH@2020@dev',
remote_bind_address=('192.168.1.76', 7021),
def login_linux_ftp(server: SSHTunnelForwarder):
transport = Transport(('localhost', server.local_bind_port))
transport.banner_timeout = 60
transport.connect(username='root', password='ADMIN@ciih')
sftp = SFTPClient.from_transport(transport)
def login_linux_shell(server: SSHTunnelForwarder):
ssh_client.set_missing_host_key_policy(AutoAddPolicy())
ssh_client.connect(hostname='127.0.0.1', port=server.local_bind_port, username='root', password="ADMIN@ciih")
def create_dir(file_path):
if os.path.exists(file_path) is False:
HCNetSDK_path = 'D:/workspaceweb/workshop-java/src/main/java/com/ciih/workshop/utils/hk/HCNetSDK.java'
HCNetSDK_content: str = ''
with open(HCNetSDK_path, "r", encoding="utf-8") as f1:
if 'boolean isLinux = false;' in line:
line = line.replace('boolean isLinux = false;', 'boolean isLinux = true;')
with open(HCNetSDK_path, "w", encoding="utf-8") as f2:
f2.write(HCNetSDK_content)
application_path = 'D:/workspaceweb/workshop-java/src/main/resources/application.yml'
application_content: str = ''
with open(application_path, "r", encoding="utf-8") as f1:
if 'active: pro' in line:
line = line.replace('active: pro', 'active: test')
application_content += line
with open(application_path, "w", encoding="utf-8") as f2:
f2.write(application_content)
if __name__ == '__main__':
clean: str = mvn_clean(project_path='D:/workspaceweb/workshop-java')
package: str = mvn_package(project_path='D:/workspaceweb/workshop-java')
tunnel: SSHTunnelForwarder = login_ssh_tunnel()
ftp: SFTPClient = login_linux_ftp(tunnel)
back_path = 'E:/DevOps/test/' + datetime.datetime.now().strftime('%Y-%m-%d-%Hh%Mm%Ss')
ftp.get('/home/webapps/workshop-0.0.1-SNAPSHOT.jar', back_path + '/workshop-0.0.1-SNAPSHOT.jar')
ftp.put('D:/workspaceweb/workshop-java/target/workshop-0.0.1-SNAPSHOT.jar',
'/home/webapps/workshop-0.0.1-SNAPSHOT.jar')
shell: SSHClient = login_linux_shell(tunnel)
command = shell.exec_command("kill -9 `netstat -nlp | grep :8088 | awk '{print $7}' | awk -F'/' '{ print $1 }'`")
stdin, stdout, stderr = shell.exec_command(
'nohup java -Dfile.encoding=utf-8 -jar -Duser.timezone=GMT+08 /home/webapps/workshop-0.0.1-SNAPSHOT.jar > /home/webapps/nohup.out 2>&1 &')
