シェルスクリプト

シェルスクリプトの自動運転でsudoを使うには、NOPASSWDで、かつ !requiretty な設定をすればよいのだが、うっかりsudoできないユーザーでこれを実行してしまった場合、いつまでもパスワードの入力待ちで止まってしまう。これに気付かず後続処理が走ってしまうのは怖いのだが、 /etc/sudoers.d/ユーザー名 のファイルをgrepして判断しようにもsudoを使わないといけない(rootで実行すればよいとか言わないで><)。

そこでぽぽは考えましたよ。「(ぴこーん!) 最初にsudoで何かしらの無害なコマンドを叩かせて終了ステータスを捕まえればええんやぁ!」

というわけでこんな処理をスクリプトの最初に仕込んでやればよい。

…続きを読む

リモートホストにSSH接続できることを確認してからrsyncする

リモートホストにSSH接続できることを確かめてからrsyncしたいなー、というそれだけのキッカケで書いたシェルスクリプト。恐らくシェルスクリプト初心者にも読みやすい作り、のはず。

単にrsyncする前にsshでログインして「:」だけ叩いて帰ってきて「どうだった?」と終了ステータスを捕まえて、sshが正常終了だったらrsyncする、というそれだけなんですが、終了ステータス捕まえるためだけに何秒も待たされるのが嫌だったので、sshコマンドのあとに「ConnectTimeout 1」オプションをつけています。

はい、答えだけ知りたい人はここで回れ右(つめたいなあ 偉そうだなあ)。

…続きを読む

どうもこんばんは。 @nullpopopo です。またおっさんになってしまいました。以下の要件でLinuxのローカルユーザーを作成したくなったので、シェルスクリプト一撃でできるようにしてみました。

  1. OSインストール直後の真っさらな状態(root以外にログインできるユーザーはいない)
  2. UID GIDともに1000番から連番で作成。ただし、GIDは1000番固定。
  3. グループ名は「webmaster」
  4. パスワードはランダムな8文字で、 /root 直下にパスワードのメモを残しておく(もちろん後で消す)

…続きを読む

前回、Amazonで欲しい商品の最安値をワンライナーで取得しましたが、ロギングとメール通知を一撃でやっつけたいのでシェルスクリプト化しました。ソースはこちら。ライセンスはMITです。

…続きを読む