
というスクリプトを作成しました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
。