2

編集、質問は完全に明確ではなかったかもしれません、短いバージョン:

スクリプトがアクティブなコンソールではなくバックグラウンドで実行されている場合、ユーザー入力を求めるダイアログをポップアップするにはどうすればよいですか?/編集

udevまたはcronからbashスクリプトを実行すると、通常、バックグラウンドのどこかで静かに実行されます。例としては、データバックアップのためにrsyncを実行する外付けハードドライブを接続する場合があります。したがって、ハードドライブを接続するたびにこのアクションを起動したいわけではありません。

ユーザー入力ダイアログを起動して「はい」または「いいえ」を尋ねる最小の方法は何ですか?PyQtを使用してインターフェイスを作成することもできますが、依存関係をできるだけ少なくする必要があります。理想的には、ウィンドウマネージャーをクロスし、ウィンドウマネージャーがなくてもかまいません。

ありがとう!

4

4 に答える 4

1

編集2:軽量(したがって予想どおり醜い)バージョンはxmessageです。より良いものがない限り、これがおそらく質問への答えになります。

xmessage  "Do you want to run the backup script?" -buttons yes,no

http://linux.byexamples.com/archives/87/using-gui-dialog-box/

編集:kde用のKDialogがありますが、X用に本当に軽量なものはありますか?

http://www.linux-magazine.com/Issues/2009/99/Zenity-and-KDialog

kdialog --title "Do you want to run the backup script?"
--yesno "Do you want to run the backup script?"

私は現在、zenityに傾倒しています。問題は、kdeに対するgtkの依存関係の配列全体を取り込むことですが、クロスプラットフォームであり、Windowsで機能します。本質的に、これは私が探していたものです。

if zenity --question --text="Please press a button."; then
    zenity --info --text="You pressed Yes\!"
else
    zenity --error --text="You pressed No\!"
fi

しかし、それがリソース/依存関係をはるかに軽くすることを望んでいました。別の提案はありますか?

于 2012-12-19T17:31:24.463 に答える
0

簡単なアプローチは、自動化されたスクリプトが単にあなたに電子メールを送るか、おそらくwall指示(実際のスクリプトの場所を含む)で警告することです。

touch別のアプローチは、ファイルへの自動スクリプトを使用して/var/lib、5分後もファイルがまだ存在する場合に続行することです。これにより、ユーザーは(ファイルを削除して)プロセスを停止することができますが、自動化は維持されます。

于 2012-12-19T16:42:29.327 に答える
0

これは、そもそもcronやudevで処理する必要があるものではありません。適切なD-Busメッセージをリッスンし、適切なアクションを実行するユーザーランドデーモンを作成します。

于 2012-12-19T16:43:52.633 に答える
0

これは、Linuxまたはスーパーユーザーまたはserverfaultに投稿する必要があります。

しかし、Linuxでの一番のグーグル検索はStackOverflowへのユーザー入力リンクをここに戻します: https ://www.google.com/search?q = linux + read + user + input&ie = utf-8&oe = utf-8&aq = t&rls = org.mozilla:en-US:official&client = firefox-a&channel = fflb

だから私はそれがあまりにもベースから外れていないと思います。

繰り返しになりますが、Linuxの3番目かそこらのグーグル結果はServerFaultへ のコマンドusbデバイスプラグインリンクを呼び出します: https ://serverfault.com/questions/399698/execute-a-command-when-a-device-is-connected-via-usb

これら2つを組み合わせて演習として残しておきます。

于 2012-12-19T16:46:16.797 に答える