Ting som dette kan være kjedelig å knytte ned, siden med mindre du har et tastatur og en skjerm som du kan koble til, er det ingen måte, hvis ssh ikke fungerer, å sjekke hva som har gått galt på live-systemet.
Her er et enkelt utgangspunkt:
#! / bin / bash # Sett disse til hva du vil .router_ip = 192.168.0.1log_file = / tmp / mystery.log # Make at vi kan skrive til log.touch $ log_fileif [$? ! = 0]; ekko deretter "Kan ikke bruke $ log_file." exit 1fi # Redirect output.exec 1> / dev / nullexec 2>> $ log_file # A function for logging.print2log () {echo $ (date + "% D% R") $ @ >> $ log_file} # Loop infit 1 ]; sove 900 # 15 minutter # Ping-router. ping -c 1 $ router_ip & vent $! hvis [$? ! = 0]; deretter print2log "Ping $ router_ip mislyktes." annet print2log "Ping OK." fi # Sjekk sshd. print2log "sshd PIDs:" $ (ps -o pid = -C sshd) ferdig
Kall dette check.sh
eller hva du vil, chmod 755 check.sh
for å gjøre den kjørbar, og start den fra en ssh-pålogging:
setsid ./check.sh &
Det trenger ikke å kjøres sudo
. Du kan nå logge av, og det skal fortsette. Hvert 15. minutt vil det skrive ut noe slikt til /tmp/mystery.log
:
03/27/15 10:59 Ping OK.03 / 27/15 10:59 sshd PID: 4261 14262
Den første linjen indikerer at det er en fungerende nettverkstilkobling, og den andre indikerer at sshd
er i gang. SKRIV PIDene: det bør være minst en, og selv om akkurat det det ikke betyr noe, bør det være rimelig konsistent (dvs. ikke endre hvert 15. minutt).
Hvis det ikke er noen PID på et visst punkt, har du i det minste bekreftet at sshd
har dødd av en eller annen grunn.
grep sshd / var / log / syslog
Bør hjelpe deg med å finne årsaken.