Wysyłanie wiadomości do serwera przez gniazdo podczas uruchamiania przy użyciu Upstart
Problem
>
Muszę wysłać wiadomość do serwera przez gniazdo TCP podczas uruchamiania komputera. Używamy Ubuntu 14.04 i dlatego domyślnie powinniśmy używać Upstart jako inicjalizacji naszego systemu. (Mamy również inne komputery z systemem Ubuntu 16.04, które mogą używać systemd, więc staram się trzymać skrypty powłoki oddzielnie od systemowego pliku inicjującego)
Aktualne rozwiązanie
>
Obecnie używam dwóch plików dla klientów: pliku upstart .conf i pliku skryptu powłoki.
Plik Upstart
>
Plik upstartu (nazwijmy go foo.conf) ma następującą zawartość:
#!upstart
description "Send Message on Startup"start on (local-filesystems
and net-device-up
and runlevel [2345])exec/opt/foo/foo.sh
Plik powłoki
>
Plik powłoki (nazwijmy go foo.sh) ma następującą zawartość
#!/bin/bashecho "Sending update message..."
echo "Message" | nc server-hostname 9999
echo "Completed sending update message."
Objawy
>
Po ponownym uruchomieniu komputera, na którym znajdują się te pliki, w pliku dziennika pojawiają się następujące informacje:
Sending update message...
Completed sending update message.
Jednak serwer nigdy nie otrzymuje wiadomości.
Pytanie
>
To rozwiązanie w tej chwili nie działa. Szukam sugestii, jak sprawić, by to rozwiązanie działało, lub innych sugestii, jak wykonać to samo zadanie.
UPDATE: plik systemowy
>
Oto szczegóły pliku jednostki usługowej systemd, który wdrożyłem w systemie Ubuntu 16.04. Ten działa przy każdym ponownym uruchomieniu.
[Unit]
Description=Send Message on Startup
After=network-online.target[Service]
Type=oneshot
ExecStart=/opt/foo/foo.sh[Install]
WantedBy=multi-user.target
Nie znaleziono powiązanych wyników
Zaproszony:
Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się
1 odpowiedzi
Anonimowy użytkownik
Potwierdzenie od:
Oto kolejna opcja, która powinna rozwiązać ten problem. Zasadniczo poczekaj, aż odpowie na ping.