diff --git a/forwarding.py b/forwarding.py index c69daba..91c4d2b 100644 --- a/forwarding.py +++ b/forwarding.py @@ -1,6 +1,7 @@ import click -import subprocess -from logger import logging +import logging + +from exec import run_root_cmd from ssh import run_ssh_command from wrapper import check_programs_wrap @@ -10,25 +11,26 @@ def cmd_forwarding(): """Enable network forwarding for a usb-attached device""" check_programs_wrap(['syctl', 'iptables']) - result = subprocess.run([ + logging.info("Enabling ipv4 forwarding with sysctl") + result = run_root_cmd([ 'sysctl', 'net.ipv4.ip_forward=1', ]) if result.returncode != 0: - logging.fatal(f'Failed to enable ipv4 forward via sysctl') - exit(1) + click.Abort('Failed to enable ipv4 forward via sysctl') - result = subprocess.run([ + logging.info("Enabling ipv4 forwarding with iptables") + result = run_root_cmd([ 'iptables', '-P', 'FORWARD', 'ACCEPT', ]) if result.returncode != 0: - logging.fatal(f'Failed set iptables rule') - exit(1) + click.Abort('Failed set iptables rule') - result = subprocess.run([ + logging.info("Enabling ipv4 NATting with iptables") + result = run_root_cmd([ 'iptables', '-A', 'POSTROUTING', @@ -40,10 +42,9 @@ def cmd_forwarding(): '172.16.42.0/24', ]) if result.returncode != 0: - logging.fatal(f'Failed set iptables rule') - exit(1) + click.Abort('Failed set iptables rule') + logging.info("Setting default route on device via ssh") result = run_ssh_command(cmd=['sudo -S route add default gw 172.16.42.2']) if result.returncode != 0: - logging.fatal(f'Failed to add gateway over ssh') - exit(1) + click.Abort('Failed to add gateway over ssh') diff --git a/ssh.py b/ssh.py index bf225ac..5da7210 100644 --- a/ssh.py +++ b/ssh.py @@ -2,11 +2,11 @@ from typing import Optional import logging import os import pathlib -import subprocess import click from config import config from constants import SSH_COMMON_OPTIONS, SSH_DEFAULT_HOST, SSH_DEFAULT_PORT +from exec import run_cmd @click.command(name='ssh') @@ -44,7 +44,7 @@ def run_ssh_command(cmd: list[str] = [], '--', ] + cmd logging.debug(f"running cmd: {full_cmd}") - return subprocess.run(full_cmd) + return run_cmd(full_cmd) def scp_put_files(src: list[str], dst: str, user: str = None, host: str = SSH_DEFAULT_HOST, port: int = SSH_DEFAULT_PORT): @@ -64,7 +64,7 @@ def scp_put_files(src: list[str], dst: str, user: str = None, host: str = SSH_DE ] logging.info(f"Copying files to {user}@{host}:{dst}:\n{src}") logging.debug(f"running cmd: {cmd}") - return subprocess.run(cmd) + return run_cmd(cmd) def find_ssh_keys(): @@ -95,7 +95,7 @@ def copy_ssh_keys(root_dir: str, user: str): create = click.confirm("Do you want me to generate an ssh key for you?", True) if not create: return - result = subprocess.run([ + result = run_cmd([ 'ssh-keygen', '-f', os.path.join(pathlib.Path.home(), '.ssh', 'id_ed25519_kupfer'), @@ -106,7 +106,7 @@ def copy_ssh_keys(root_dir: str, user: str): '-N', '', ]) - if result.returncode != 0: + if result.returncode != 0: # type: ignore logging.fatal("Failed to generate ssh key") keys = find_ssh_keys()