arp-scan を使用した sudo cron ジョブで空の出力が返される

arp-scan を使用した sudo cron ジョブで空の出力が返される

というスクリプトを作成しましたhello.sh。これには次の内容が含まれています。

#!/bin/bash

printf "$( arp-scan --interface=eth0 --localnet )\n"
printf "test\n"

これを実行可能にして ( chmod o+x) 実行すると ( ./hello.sh >> file.txt)、 で正しい出力file.txt(arp-scan の結果と文字列 "test") が得られます。しかし、 に次の行を追加すると crontab -e:

*/1 * * * *  /path/to/hello.sh >> /path/to/file.txt

次のような出力が得られます。

テスト

テスト

テスト

ご覧のとおり、arp-scan部分によって空の文字列が返されます。arpscan を cron で動作させるにはどうすればよいですか?

追加情報:すべては sudo ( ) としてログインした後に行われますsudo -i。sudoarp-scanが必要です。私はこれを Fedora 20 で実行しています。

答え1

cron非常に最小限の環境と短縮されたパスで実行されます。

cronによって実行されるように設計されたスクリプトでは、すべてのコマンドに完全なパスが指定されていることを確認するか、スクリプトが独自の PATH 変数を設定することが常に最も安全です。

コマンドにフルパスを追加してみてくださいarp-scan

関連情報