Java Runtime呼び出しローカルコマンドエラー:sudo:sorry,you must have a tty to run sudo
1306 ワード
JavaのRuntime.getRuntime().exec()メソッドでローカルコマンドを呼び出す場合:
コンソールの下で上のコードをテストしても問題はありません.プログラムがバックグラウンドで実行されると正常に動作しません.その時、とても困惑していました.そしてjava・lang.ProcessのgetErrorStreamメソッドでエラーメッセージを取得する:
Googleを通過するとすぐに問題に位置します.プロファイル/etc/sudoersがrequirettyオプションを設定した後、sudoを実行するには端末が必要です.次にvimを使用してプロファイルを変更するか、visudoコマンドを直接実行してプロファイルを編集します.
その後、プログラムを再実行し、問題を解決します.
Runtime.getRuntime().exec(new String[] {"/bin/bash", "-c", "sudo nmap -sU -p 53 8.8.8.8"});
コンソールの下で上のコードをテストしても問題はありません.プログラムがバックグラウンドで実行されると正常に動作しません.その時、とても困惑していました.そしてjava・lang.ProcessのgetErrorStreamメソッドでエラーメッセージを取得する:
sudo: sorry, you must have a tty to run sudo
Googleを通過するとすぐに問題に位置します.プロファイル/etc/sudoersがrequirettyオプションを設定した後、sudoを実行するには端末が必要です.次にvimを使用してプロファイルを変更するか、visudoコマンドを直接実行してプロファイルを編集します.
#
# Disable "ssh hostname sudo <cmd>", because it will show the password in clear.
# You have to run "ssh -t hostname sudo <cmd>".
#
# Defaults requiretty #
その後、プログラムを再実行し、問題を解決します.