Pi1: Difference between revisions
From dtype.org
m (change to dns entry) |
|||
Line 12: | Line 12: | ||
[Install] | [Install] | ||
WantedBy=multi-user.target</nowiki> | WantedBy=multi-user.target</nowiki> | ||
== option 2 == | |||
<nowiki>[Unit] | |||
Description=Service to maintain an ssh reverse tunnel | |||
Wants=network-online.target | |||
After=network-online.target | |||
StartLimitIntervalSec=0 | |||
[Service] | |||
Type=simple | |||
ExecStart=/usr/bin/ssh -qNn \ | |||
-o ServerAliveInterval=30 \ | |||
-o ServerAliveCountMax=3 \ | |||
-o ExitOnForwardFailure=yes \ | |||
-o StrictHostKeyChecking=no \ | |||
-o UserKnownHostsFile=/dev/null \ | |||
-i /etc/sshtunnel/id_rsa \ | |||
-R 9001:localhost:22 \ | |||
sshtunnel@server.net -p 443 | |||
Restart=always | |||
RestartSec=60 | |||
[Install] | |||
WantedBy=multi-user.target</nowiki> | |||
== ffmpeg-driveway.service == | == ffmpeg-driveway.service == | ||
<nowiki>[Unit] | <nowiki>[Unit] |
Latest revision as of 16:43, 1 August 2021
systemd services
/etc/systemd/system/autossh.service
[Unit] Description=AutoSSH tunnel service After=network.target [Service] Environment="AUTOSSH_GATETIME=0" ExecStart=/usr/bin/autossh -M 0 -o "ServerAliveInterval 110" -o "ServerAliveCountMax 3" -o ExitOnForwardFailure=yes -N -i /root/.ssh/id_rsa -R "[::]:62222:localhost:22" r@j1.alt.org Restart=always [Install] WantedBy=multi-user.target
option 2
[Unit] Description=Service to maintain an ssh reverse tunnel Wants=network-online.target After=network-online.target StartLimitIntervalSec=0 [Service] Type=simple ExecStart=/usr/bin/ssh -qNn \ -o ServerAliveInterval=30 \ -o ServerAliveCountMax=3 \ -o ExitOnForwardFailure=yes \ -o StrictHostKeyChecking=no \ -o UserKnownHostsFile=/dev/null \ -i /etc/sshtunnel/id_rsa \ -R 9001:localhost:22 \ sshtunnel@server.net -p 443 Restart=always RestartSec=60 [Install] WantedBy=multi-user.target
ffmpeg-driveway.service
[Unit] Description=ffmpeg driveway feed After=network.target [Service] User=drew Group=drew ExecStart=/var/www/html/driveway/ffmpeg.sh Restart=always [Install] WantedBy=multi-user.target
ffmpeg-live.service
[Unit] Description=ffmpeg driveway feed live After=network.target [Service] User=drew Group=drew ExecStart=/home/drew/live_stream.sh [Install] WantedBy=multi-user.target
service supporting scripts
/var/www/html/driveway/ffmpeg.sh
#!/bin/bash cd /var/www/html/driveway/ /usr/bin/ffmpeg -loglevel quiet -i rtsp://192.168.42.109:554/CH001.sdp?tcp -timelimit 86400 -c copy -f segment -segment_time 600 -segment_atclocktime 1 -reset_timestamps 1 -strftime 1 "driveway-%Y%m%d-%H%M%S.mp4"
/home/drew/live_stream.sh
#!/bin/bash ffmpeg -i rtsp://192.168.42.109:554/CH001.sdp?tcp -f lavfi -i anullsrc -c:v copy -c:a aac -t 5:00 -f flv rtmp://a.rtmp.youtube.com/live2/YOUTUBEKEY
sqs-consumer.sh
#!/usr/bin/python3 -u import boto3 import os import time POLLSLEEP = 1 POLLTIME = 20 sqs = boto3.resource('sqs') snsclient = boto3.client('sns') queue = sqs.get_queue_by_name(QueueName='host-pi1') while True: for message in queue.receive_messages( MessageAttributeNames=['command'], MaxNumberOfMessages=1, WaitTimeSeconds=POLLTIME ): command = '' print("Received message") print(message.message_attributes) if message.message_attributes is not None: command = message.message_attributes.get('command').get('StringValue') if command == 'ffmpeg-live': print("Executing service ffmpeg-live start") os.system("service ffmpeg-live start") message.delete() response = snsclient.publish( TargetArn="arn:aws:sns:us-east-1:826233342239:emaildrew", Message="SQS message received by pi1!" ) time.sleep(POLLSLEEP)