1
This commit is contained in:
commit
16aad23d12
59
README.md
Normal file
59
README.md
Normal file
@ -0,0 +1,59 @@
|
||||
# Ping-Out
|
||||
A `bash` script and a `systemd` service that check internet connectivity by pinging `8.8.8.8`.
|
||||
|
||||
The `bash` script `ping-out.sh` pings every 60 seconds to the presumably always available IP address
|
||||
`8.8.8.8`. If packages may be lost, an error will be logged into a file.
|
||||
|
||||
|
||||
## Prerequisites
|
||||
The script requires `bash`. The service requires also `systemd`.
|
||||
|
||||
|
||||
## Usage
|
||||
Review and adjust the script `ping-out.sh` according to your gusto. E.g. adjust the log file path,
|
||||
the time interval or the IP adress to which to ping to.
|
||||
|
||||
Start the script like:
|
||||
```bash
|
||||
bash ping-out.sh
|
||||
```
|
||||
|
||||
You can detach the script from the terminal session and run it in the background:
|
||||
```bash
|
||||
nohup ./ping-out.sh &
|
||||
```
|
||||
|
||||
### Running `ping-out` as a Service
|
||||
The script `setup-systemd-service.sh` can set up the service on platforms that support `systemd`,
|
||||
e.g. `Ubuntu`.
|
||||
Running `ping-out.sh` as a service allows for autostart and running in the backgorund.
|
||||
|
||||
To install the `systemd` service for `ping-out` on `Ubuntu`, run:
|
||||
```bash
|
||||
sudo bash setup-systemd-service.sh
|
||||
```
|
||||
|
||||
This copies the script `ping-out.sh` into the directory `/usr/local/bin` and the file
|
||||
`ping-out.service` into the directories of the `systemd` installation.
|
||||
On other platforms than `Ubuntu`, you might have to adjust the setup-script.
|
||||
|
||||
After installation, you may control the service via typical `systemd` commands:
|
||||
```bash
|
||||
sudo systemctl enable ping-out # run service at system startup
|
||||
sudo systemctl start ping-out
|
||||
sudo systemctl stop ping-out
|
||||
sudo systemctl restart ping-out
|
||||
sudo systemctl status ping-out
|
||||
```
|
||||
|
||||
If you want to make changes to the program, change the script and replace the script file in
|
||||
`/usr/local/bin/`.
|
||||
|
||||
|
||||
## Contributing
|
||||
Work on your stuff locally, branch, commit and modify to your heart's content.
|
||||
If there is anything you can extend, fix or improve, please do so!
|
||||
Happy coding!
|
||||
|
||||
|
||||
## TODO
|
9
ping-gre-tunnel.service
Normal file
9
ping-gre-tunnel.service
Normal file
@ -0,0 +1,9 @@
|
||||
[Unit]
|
||||
Description=Ping a host service
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
ExecStart=/bin/bash /usr/local/bin/ping-host.sh 192.168.99.2
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
23
ping-host.sh
Executable file
23
ping-host.sh
Executable file
@ -0,0 +1,23 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Ping command line options:
|
||||
# -c: stop after c answered packages
|
||||
# -i: seconds wait interval
|
||||
# -q quiet
|
||||
# -w: seconds overall deadline
|
||||
|
||||
DESTINATION="$1"
|
||||
SECONDS="2"
|
||||
RATE_IN_SECONDS="2"
|
||||
NUMBER_OF_PINGS="1"
|
||||
INTERVAL="1"
|
||||
|
||||
while sleep ${RATE_IN_SECONDS}; do
|
||||
ping_output="$(ping -c ${NUMBER_OF_PINGS} -i ${INTERVAL} -q -w ${SECONDS} ${DESTINATION} 2>/dev/null)"
|
||||
PING_EXIT_CODE="$?"
|
||||
if [ "${PING_EXIT_CODE}" -ne 0 ]; then
|
||||
ping_results="$(grep 'packets transmitted.*received.*packet loss.*time' <<< "$ping_output")"
|
||||
now="$(date '+%s') $(date)"
|
||||
printf "%s %s %s\n" "$now" "$ping_exit_code" "$ping_results"
|
||||
fi
|
||||
done
|
19
setup-systemd-service.sh
Executable file
19
setup-systemd-service.sh
Executable file
@ -0,0 +1,19 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Setup a systemd service that can run the script ping-out.sh.
|
||||
#
|
||||
# author: andreasl
|
||||
set -e
|
||||
|
||||
if ! command -v systemd >/dev/null; then
|
||||
printf 'Error: systemd not found.\n'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
sudo cp -v 'ping-out.sh' '/usr/local/bin'
|
||||
sudo cp -v 'ping-out.service' '/lib/systemd/system'
|
||||
|
||||
printf 'systemd service ping-out installed.\n'
|
||||
|
||||
printf 'Running\n systemctl status ping-out...\n'
|
||||
sudo systemctl status ping-out
|
Loading…
Reference in New Issue
Block a user