#!/bin/python3 import serial import subprocess import sys import os import time USAGE = f"USAGE: {sys.argv[0]} vm_guest gate ip mask ssh_key" def send_cmd(ser, delay, cmd): ser.write(f"{cmd}\n".encode("utf-8")) time.sleep(delay) def send_cmds(ser, cmds): for cmd in cmds: send_cmd(ser, cmd[0], cmd[1]) def main(): COM = "/dev/" BAUD = 115200 TIMEOUT = 1 if len(sys.argv) != 7: sys.stderr.write(USAGE) sys.exit(1) GUEST = "vm-tmp" HOST = sys.argv[1] cmd = f"vmctl show | grep {GUEST} | tr -s ' ' | cut -d ' ' -f7" _buffer = subprocess.check_output(cmd, shell=True).decode().rstrip() print(_buffer) if _buffer == "": sys.exit(1) COM += _buffer IP = sys.argv[2] GATE = sys.argv[3] MASK = sys.argv[4] DNS = sys.argv[5] SSHKEY = sys.argv[6] ser = serial.Serial(COM, BAUD, timeout=TIMEOUT) send_cmd(ser, 1, "root") # virtual interface send_cmds(ser, [ [1, "setup-interfaces"], [1, ""], [1, f"{IP}"], [1, f"{MASK}"], [1, f"{GATE}"], [1, "no"], [1, "ifdown -a"], [10, "ifup -a"] ]) # dns send_cmds(ser, [ [1, "setup-dns"], [1, f"{HOST}"], [1, f"{DNS}"] ]) # ssh send_cmds(ser, [ [5, "apk add openssh"], [1, "mkdir /root/.ssh"], [1, f"echo '{SSHKEY}' > /root/.ssh/authorized_keys"], [1, f"echo 'PermitRootLogin yes' >> /etc/ssh/sshd_config"], [1, "/etc/init.d/sshd restart"] ]) ser.close() print(COM) if __name__ == "__main__": main()