WIP
This commit is contained in:
6
cleanup_services.sh
Executable file
6
cleanup_services.sh
Executable file
@@ -0,0 +1,6 @@
|
||||
#!/bin/bash
|
||||
|
||||
for service in $(systemctl list-units --type=service --no-legend | grep example | awk '{print $1}'); do
|
||||
sudo systemctl stop $service
|
||||
echo "Stopped $service"
|
||||
done
|
||||
12
example.service
Normal file
12
example.service
Normal file
@@ -0,0 +1,12 @@
|
||||
[Unit]
|
||||
Description=Example Service
|
||||
Requires=example.socket
|
||||
After=example.socket
|
||||
|
||||
[Service]
|
||||
User=root
|
||||
Group=root
|
||||
ExecStart=/root/.pyenv/versions/venv/bin/python /home/john/ad-tunnel/run_service.py
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
@@ -1,9 +1,10 @@
|
||||
[Unit]
|
||||
Description=Example Unix Socket
|
||||
StopWhenUnneeded=true
|
||||
|
||||
[Socket]
|
||||
ListenStream=/run/example.sock
|
||||
Accept=yes
|
||||
Accept=no
|
||||
|
||||
[Install]
|
||||
WantedBy=sockets.target
|
||||
@@ -1,6 +0,0 @@
|
||||
[Unit]
|
||||
Description=Example Service
|
||||
|
||||
[Service]
|
||||
ExecStart=/bin/bash -c 'echo "Hello, world!" > /tmp/example_output.txt'
|
||||
StandardInput=socket
|
||||
@@ -16,9 +16,9 @@ def create_symlink(source, target):
|
||||
|
||||
# Create the symbolic link
|
||||
target_path.symlink_to(source)
|
||||
print(f'Created symlink: {source} -> {target}')
|
||||
print(f'Created symlink: [magenta]{source}[/] -> [magenta]{target}[/]')
|
||||
except OSError as e:
|
||||
print(f'Error creating symlink: {e}')
|
||||
print(f'Error creating symlink: [bold red]{e}[/]')
|
||||
|
||||
|
||||
def run_command(command):
|
||||
@@ -34,7 +34,7 @@ def main():
|
||||
|
||||
# Define the source and target paths
|
||||
socket_file = 'example.socket'
|
||||
service_file = 'example@.service'
|
||||
service_file = 'example.service'
|
||||
|
||||
# Create symlinks
|
||||
create_symlink(repo_dir / socket_file, systemd_dir / socket_file)
|
||||
|
||||
27
run_service.py
Executable file
27
run_service.py
Executable file
@@ -0,0 +1,27 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import os
|
||||
import subprocess
|
||||
|
||||
from rich import print
|
||||
|
||||
os.chdir('/root')
|
||||
cmd = ['code', 'tunnel']
|
||||
# cmd = ['echo', '"Hello world"']
|
||||
|
||||
|
||||
print('PATH:\n' + '\n'.join(f' - {p}' for p in os.environ['PATH'].split(':')))
|
||||
try:
|
||||
result = subprocess.run(
|
||||
cmd,
|
||||
shell=True,
|
||||
env=os.environ,
|
||||
text=True,
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.STDOUT,
|
||||
)
|
||||
result.check_returncode()
|
||||
except subprocess.CalledProcessError as e:
|
||||
print(e)
|
||||
finally:
|
||||
print(result.stdout)
|
||||
24
test_socket.py
Executable file
24
test_socket.py
Executable file
@@ -0,0 +1,24 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
import socket
|
||||
from time import sleep
|
||||
|
||||
from rich.console import Console
|
||||
|
||||
console = Console()
|
||||
print = console.print
|
||||
|
||||
with socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) as sock:
|
||||
try:
|
||||
sock.connect('/run/example.sock')
|
||||
except Exception:
|
||||
raise
|
||||
else:
|
||||
with console.status('Connected...'):
|
||||
while True:
|
||||
try:
|
||||
sleep(0.1)
|
||||
except KeyboardInterrupt:
|
||||
break
|
||||
finally:
|
||||
print('Exiting')
|
||||
Reference in New Issue
Block a user