前にrtcwakeスクリプトのネタを書いた時みたいなroot権限が必要な箇所を、sudo rtcwake のように書いて、実行時は端末画面上でパスワード入力していたんですが、sudoの代わりにgksuを使えば端末無しでもパスワード入力ダイアログが出てきてくれるとか・・・知らなかった。
gksuってわりとよく見かけますが、なんで調べたこと無かったかと考えてみると、数年前までちょいちょい覗いていたubuntu日本語フォーラム(最近はほとんど見ない)で見かけることが多かった気がするんですが、当時、今よりもかなり初心者な私はそこに載っていた例がスクリプト内でやるのか端末でのコマンド入力例なのかを意識せず、スクリプト内で使い端末無しで実行した時のパスワード入力ダイアログの有無の違いも知らず(それ以外にも違いは有るんだろうけど)、sudoはそれ以前にも使っていた(スクリプトは別)ので、自然とgksuを無視、というか勝手にsudoに置き換えて捉えるようになってしまっていたように思います。
パスワードの必要なシェルスクリプトを端末無しで実行できるとパネルアプレット等のフォルダビュアーとかに入れておいたり、.desktopファイルを作ってアプリケーションランチャに追加したり、わりと使い勝手良くなりますね。
更にもうひとつ、スクリプト中でのパスワード入力手段を探していて「各種ダイアログを表示する」というzenityなる物が目に付きまして
以前書いたrtcwakeスクリプトは、復帰時刻を曜日ごとに固定した使い方にしましたが、zenityを使って復帰時刻を都度、指定するのもやってみました。(はい、端末でやらなくても大丈夫なやつです)
#!/bin/sh
d=`zenity --entry \
--title="指定時刻までサスペンド" \
--text="復帰したい日付を入力" \
--entry-text "\`date '+%Y-%m-%d'\`"`
t=`zenity --entry \
--title="指定時刻までサスペンド" \
--text="復帰したい時刻を入力([00~23]:[00~59])" \
--entry-text "\`date '+%H:%M'\`"`
T=`date +%s -d "$d $t:00"`
N=`date +%s`
if [ $T -le $N ]; then
zenity --error \
--text="$d $t 既に経過"
exit 1
fi
STOP=`expr $T - $N`
min=`expr ${STOP} / 60`
gksu -m ${min}分後に復帰 "rtcwake -m mem -s ${STOP}"
rtcwakeの参考情報はこちら
gksuってわりとよく見かけますが、なんで調べたこと無かったかと考えてみると、数年前までちょいちょい覗いていたubuntu日本語フォーラム(最近はほとんど見ない)で見かけることが多かった気がするんですが、当時、今よりもかなり初心者な私はそこに載っていた例がスクリプト内でやるのか端末でのコマンド入力例なのかを意識せず、スクリプト内で使い端末無しで実行した時のパスワード入力ダイアログの有無の違いも知らず(それ以外にも違いは有るんだろうけど)、sudoはそれ以前にも使っていた(スクリプトは別)ので、自然とgksuを無視、というか勝手にsudoに置き換えて捉えるようになってしまっていたように思います。
パスワードの必要なシェルスクリプトを端末無しで実行できるとパネルアプレット等のフォルダビュアーとかに入れておいたり、.desktopファイルを作ってアプリケーションランチャに追加したり、わりと使い勝手良くなりますね。
更にもうひとつ、スクリプト中でのパスワード入力手段を探していて「各種ダイアログを表示する」というzenityなる物が目に付きまして
以前書いたrtcwakeスクリプトは、復帰時刻を曜日ごとに固定した使い方にしましたが、zenityを使って復帰時刻を都度、指定するのもやってみました。(はい、端末でやらなくても大丈夫なやつです)
#!/bin/sh
d=`zenity --entry \
--title="指定時刻までサスペンド" \
--text="復帰したい日付を入力" \
--entry-text "\`date '+%Y-%m-%d'\`"`
t=`zenity --entry \
--title="指定時刻までサスペンド" \
--text="復帰したい時刻を入力([00~23]:[00~59])" \
--entry-text "\`date '+%H:%M'\`"`
T=`date +%s -d "$d $t:00"`
N=`date +%s`
if [ $T -le $N ]; then
zenity --error \
--text="$d $t 既に経過"
exit 1
fi
STOP=`expr $T - $N`
min=`expr ${STOP} / 60`
gksu -m ${min}分後に復帰 "rtcwake -m mem -s ${STOP}"
rtcwakeの参考情報はこちら