Files
ad-tunnel/install_service.py
John Lancaster 483e3f1d39 simplified
2024-06-16 00:05:05 -05:00

54 lines
1.6 KiB
Python
Executable File

#!/usr/bin/env python
import subprocess
from pathlib import Path
from rich import print
def create_symlink(source, target):
try:
target_path = Path(target)
# Check if the target already exists and remove it if it does
if target_path.exists() or target_path.is_symlink():
target_path.unlink()
# Create the symbolic link
target_path.symlink_to(source)
print(f'Created symlink: [magenta]{source}[/] -> [magenta]{target}[/]')
except OSError as e:
print(f'Error creating symlink: [bold red]{e}[/]')
def main():
repo_dir = Path(__file__).resolve().parent
systemd_dir = Path('/etc/systemd/system')
# Define the source and target paths
name = 'example'
socket_file = f'{name}.socket'
service_file = f'{name}.service'
# Create symlinks
create_symlink(repo_dir / socket_file, systemd_dir / socket_file)
create_symlink(repo_dir / service_file, systemd_dir / service_file)
# Reload systemd, start and enable the socket
try:
cmd_kwargs = dict(check=True, text=True, capture_output=True)
subprocess.run(['sudo', 'systemctl', 'daemon-reload'], **cmd_kwargs)
print('Reloaded systemd services')
subprocess.run(['sudo', 'systemctl', 'start', socket_file], **cmd_kwargs)
print(f'Started [blue]{socket_file}[/]')
subprocess.run(['sudo', 'systemctl', 'enable', socket_file], **cmd_kwargs)
print(f'Enabled [blue]{socket_file}[/] to start at boot')
except subprocess.CalledProcessError as e:
print('Error:', e.stderr)
if __name__ == '__main__':
main()