Benutzer-Werkzeuge

Webseiten-Werkzeuge


aos-r8-omniswitch-crontab-cron-cronjob-reboot

Cronjob nach Reboot ausführen um Aktion auszuführen

In seltenen Fällen kann es notwendig sein nach einem Reboot des OmniSwitch eine Route zu entfernen und neu zu konfigurieren um L2GRE Tunneln zu helfen. Dieser Artikel beschreibt exemplarisch, wie dies per cron-job möglich ist.

Dieser Artikel wurde auf folgenden System/AOS getestet:

-> show system 
System:
  Description:  Alcatel-Lucent Enterprise OS6465T-P12 8.9.96.R04 Service Release, April 05, 2024.,
  Object ID:    1.3.6.1.4.1.6486.801.1.1.2.1.15.1.4,
  Up Time:      0 days 0 hours 42 minutes and 52 seconds,
  Contact:      Benny,

Vorbereitung der Python-Dateien

Vorbereitung: cron-handler.py

Diese Datei wird verwendet um aus dem „Linux-Context“ in den „AOS-Context“ zu wechseln und dort das eigentliche Skript auszuführen das exemplarisch eine Route entfernt und wieder hinzufügt.

Der Pfad zu dieser Datei muss dieser sein: /flash/python/cron-handler.py

cron-handler.py
#!/usr/bin/env python3
import subprocess
 
# This is a helper script meant to be used with the AOS R8 ams cron-app
 
#
# Do not modify below this line
#
def aos_context_command(cmd):
    subprocess.Popen(cmd, shell=True, executable='/bin/jail')
 
aos_context_command('python3 /flash/python/restore-route-reboot.py')

Vorbereitung: restore-route-reboot.py

Diese Datei ist dafür verantwortlich eine statische Route zu entfernen und wieder hinzuzufügen.

Der Pfad zu dieser Datei muss dieser sein: /flash/python/restore-route-reboot.py

In dieser Datei müssen Änderungen durchgeführt und auf die persönlichen Bedürfnisse angepasst werden!

restore-route-reboot.py
#!/usr/bin/env python3
import subprocess
 
# This script removes a route and adds it again to address a timing issue
# for L2GRE tunnels
 
# The script is only meant to be run via the AOS R8 ams cron-app
# See https://dokuwiki.alu4u.com/doku.php?id=aos-r8-omniswitch-crontab-cron-cronjob-reboot for details
 
#
# Adapt the following to your needs
# -Benny 
 
# Destination
destination = "1.1.1.1"
 
# Mask e.g. /32
mask = "32"
 
# Gateway
gateway = "192.168.2.1"
 
#
# Do not modify below this line
#
 
subprocess.run(['no', 'ip', 'static-route', f'{destination}/{mask}', 'gateway', f'{gateway}'], capture_output=False)
 
subprocess.run(['ip', 'static-route', f'{destination}/{mask}', 'gateway', f'{gateway}'], capture_output=False)

Konfiguration des Cronjob

Es ist wichtig das korrekte „working“ (running)-Verzeichnis zu wählen, in diesem Fall „working“! Diese Anleitung geht außerdem davon aus, dass dies die einzige Aufgabe für die cron-app ist - wenn nicht muss die @reboot-Zeile ganz ans Ende der Datei.

Ich habe Schwierigkeiten mit dieser Vorgehensweise festgestellt wenn die cron-app bereits mit einem „argument“ z.B. appmgr start ams cron-app argument „1 /bin/ping -c 3 192.168.2.1“ verwendet wurde. In diesem Fall würde ich davon abraten, es sollte immer nur appmgr start ams cron-app zum Starten verwendet werden und die Änderungen in der cron.cfg in „crontab“-Syntax händisch durchgeführt werden.

Vorbereitung: cron.cfg

Dieser Eintrag sorgt dafür dass nach einem Neustart des OmniSwitch 30 Sekunden gewartet wird (sleep 30), danach aus dem Linux-Kontext die Python-Datei „cron-handler.py“ aufgerufen wird, die in den AOS-CLI-Kontext wechselt und die exemplarische Route entfernt/hinzufügt, gefolgt mit einem Eintrag der Ausgabe von „date“ in der Datei /flash/finished-boot.txt.

Der Pfad zu dieser Datei muss dieser sein: /flash/working/pkg/ams/cron.cfg

cron.cfg
@reboot sleep 30 && python3 /flash/python/cron-handler.py && date >> /flash/finished-boot.txt

Cronjob starten/speichern

-> appmgr start ams cron-app
-> show appmgr 
Legend: (+) indicates application is not saved across reboot
  Application    Status    Package Name        User                  Status Time Stamp
---------------+---------+-------------------+---------------------+---------------------
+ cron-app      started   ams                 admin                 Fri Jul 19 12:51:34 2024
  config-agent  started   ovng-agent          admin                 Sun Feb 18 11:15:53 2024
  monitoring-agent started   ovng-agent          admin                 Sun Feb 18 11:15:55 2024
-> write memory flash-synchro
aos-r8-omniswitch-crontab-cron-cronjob-reboot.txt · Zuletzt geändert: 2024/07/21 12:33 von benny

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki