76 lines
2.1 KiB
Python
76 lines
2.1 KiB
Python
|
|
#!/usr/bin/env python3
|
||
|
|
"""Deploy Plan C dubbo-dev-proxy to 192.168.20.100 via SSH."""
|
||
|
|
|
||
|
|
import os
|
||
|
|
import stat
|
||
|
|
import sys
|
||
|
|
|
||
|
|
try:
|
||
|
|
import paramiko
|
||
|
|
except ImportError:
|
||
|
|
print("paramiko not installed, run: pip install paramiko")
|
||
|
|
sys.exit(1)
|
||
|
|
|
||
|
|
HOST = "192.168.20.100"
|
||
|
|
USER = "root"
|
||
|
|
PASSWORD = "Zcloud@zcloud100"
|
||
|
|
LOCAL_DIR = os.path.dirname(os.path.abspath(__file__))
|
||
|
|
REMOTE_SRC = "/opt/dubbo-dev-proxy-src"
|
||
|
|
|
||
|
|
|
||
|
|
def main():
|
||
|
|
client = paramiko.SSHClient()
|
||
|
|
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
|
||
|
|
print(f"Connecting to {HOST}...")
|
||
|
|
client.connect(HOST, username=USER, password=PASSWORD, timeout=20)
|
||
|
|
|
||
|
|
sftp = client.open_sftp()
|
||
|
|
try:
|
||
|
|
sftp.mkdir(REMOTE_SRC)
|
||
|
|
except OSError:
|
||
|
|
pass
|
||
|
|
|
||
|
|
for name in os.listdir(LOCAL_DIR):
|
||
|
|
if not (name.endswith(".sh") or name.endswith(".map")):
|
||
|
|
continue
|
||
|
|
local_path = os.path.join(LOCAL_DIR, name)
|
||
|
|
remote_path = f"{REMOTE_SRC}/{name}"
|
||
|
|
print(f"Upload {name}")
|
||
|
|
sftp.put(local_path, remote_path)
|
||
|
|
if name.endswith(".sh"):
|
||
|
|
sftp.chmod(
|
||
|
|
remote_path,
|
||
|
|
stat.S_IRWXU | stat.S_IRGRP | stat.S_IXGRP | stat.S_IROTH | stat.S_IXOTH,
|
||
|
|
)
|
||
|
|
sftp.close()
|
||
|
|
|
||
|
|
commands = [
|
||
|
|
f"cd {REMOTE_SRC} && chmod +x *.sh && INSTALL_DIR=/opt/dubbo-dev-proxy bash dubbo-proxy-install.sh",
|
||
|
|
"/opt/dubbo-dev-proxy/dubbo-proxy-status.sh",
|
||
|
|
"ss -lntp | awk '/3208|32100/' | head -8",
|
||
|
|
"nc -zv 127.0.0.1 32080 2>&1",
|
||
|
|
"nc -zv 127.0.0.1 32084 2>&1",
|
||
|
|
]
|
||
|
|
|
||
|
|
for cmd in commands:
|
||
|
|
print(f"\n>>> {cmd}")
|
||
|
|
stdin, stdout, stderr = client.exec_command(cmd, timeout=180)
|
||
|
|
out = stdout.read().decode()
|
||
|
|
err = stderr.read().decode()
|
||
|
|
code = stdout.channel.recv_exit_status()
|
||
|
|
if out:
|
||
|
|
print(out)
|
||
|
|
if err:
|
||
|
|
print("STDERR:", err)
|
||
|
|
print(f"EXIT {code}")
|
||
|
|
if code != 0 and "dubbo-proxy-install" in cmd:
|
||
|
|
client.close()
|
||
|
|
sys.exit(code)
|
||
|
|
|
||
|
|
client.close()
|
||
|
|
print("\nDeploy finished.")
|
||
|
|
|
||
|
|
|
||
|
|
if __name__ == "__main__":
|
||
|
|
main()
|