
Ich habe ein Skript mit dem Namen erstellt hello.sh
, das Folgendes enthält:
#!/bin/bash
printf "$( arp-scan --interface=eth0 --localnet )\n"
printf "test\n"
nachdem ich es ausführbar gemacht ( chmod o+x
) und ausgeführt habe ( ./hello.sh >> file.txt
), erhalte ich die korrekte Ausgabe file.txt
(das ist das Arp-Scan-Ergebnis und die Zeichenfolge „test“). Aber nachdem ich die folgende Zeile hinzugefügt habe crontab -e
:
*/1 * * * * /path/to/hello.sh >> /path/to/file.txt
Ich erhalte die folgende Ausgabe:
prüfen prüfen prüfen
Wie Sie sehen, gibt das arp-scan
Teil eine leere Zeichenfolge zurück. Wie kann ich Arpscan mit Cron zum Laufen bringen?
Zusätzliche Information:Alles ist nach der Anmeldung als sudo ( sudo -i
) erledigt. arp-scan
benötigt sudo. Ich führe dies auf Fedora 20 aus.
Antwort1
cron
läuft mit einer sehr minimalen Umgebung und einem reduzierten Pfad.
In Skripten, die von ausgeführt werden sollen, ist es immer am sichersten, cron
sicherzustellen, dass für alle Befehle der vollständige Pfad angegeben wird oder dass das Skript seine eigene PATH-Variable festlegt.
Versuchen Sie, dem Befehl den vollständigen Pfad hinzuzufügen arp-scan
.