タグ

ブックマーク / hirose31.hatenablog.jp (5)

  • 接続しているネットワークの変化をトリガとして、任意のスクリプトを実行する方法 - 例えばSSHトンネルの掘り直し - (ひ)メモ

    いままで、 小さいターミナルでこんな感じでSSHのトンネルを掘って while true; do rebuild-ssh-config; ssh -N -o "BatchMode yes" -L ... -R ... TUNNELHOST; echo retry; sleep 3; done ネットワークが変わった場合(会社に着いたとか家に着いたとか)、手動でkillall sshしてトンネルのsshプロセスを殺して掘り直す ということをやっていたのですが、 無線APによって自動でhostsを変える方法 - unknownplace.org を読んで、ネットワークが変わったタイミングでスクリプトを実行する方法を知った(id:typester++)ので、この手法を使って自動的にkillall sshするのと、あとついでに、ターミナルの中で実行してたsshプロセスを、AppleScriptでラ

    接続しているネットワークの変化をトリガとして、任意のスクリプトを実行する方法 - 例えばSSHトンネルの掘り直し - (ひ)メモ
  • 安全に一気にファイルの内容を書き換える - (ひ)メモ

    ファイルを書き換えるときに、単純に open, write, close だと、そのファイルの性格にもよりますが、問題になるケースがあります。 書き込み処理中に異常終了しちゃった 例えば open my $fh, '>', '/foo/bar'; print $fh gen_header(); print $fh gen_section_1(); print $fh gen_section_2(); # ← die print $fh "# EOF\n"; close $fh な処理で、get_section_2 が異常終了してしまうと、その後書き込まれるはずのものが書き込まれずファイルの内容が中途半端になってしまいます。(まぁでもこのケースはエラー処理をちゃんとやれば回避できますね) 書いている途中で読まれちゃった サーバ名一覧のような定義ファイルや、毎回読まれるタイプの設定ファイルの場

    安全に一気にファイルの内容を書き換える - (ひ)メモ
  • gitのブランチ名をプロンプトに表示すると結構便利 - (ひ)メモ

    gitの配布物に含まれる contrib/completion/git-completion.bash を . すると、gitのサブコマンドやそれに応じたオプション、加えて~/.gitconfigで自分用にaliasしたサブコマンドまで補完してくれるようになり、小学生もにっこりです。 同じく git-completion.bash の中で定義されてる関数 __git_ps1 を使ってシェルプロンプト($PS1)を設定すると、 #... if [ -r "$HOME/.bash_completion.d/git" ]; then # = git-completion.bash # boldにするエスケープシーケンスは省略してます PS1="${PS1}[\$(__git_ps1 \"%s)\")\w]\\$ " else PS1="${PS1}[\w]\\$ " fi #...こんなふうにg

  • シンタックスハイライトするフィルタてないかな - (ひ)メモ

    シンタックスハイライトするフィルタてないすかねー 標準入力に色(ANSI color)つけて標準出力に出すだけのやつ。 view(vim)が出力して終了してくれればいいんだけど。。。 $ colorize < filename | less -Rとか $ crontab -l | colorize | less -Rとかしたい。 で、最終的にはLESSOPENで使いたい。 追記#1 PerlText::VimColorとTerm::ANSIColorでフィルタ書いたす。 $ colorize < httpd.conf | less -R $ crontab -l | colorizeLESSOPENで呼ばれるlesspipe.shをいじって必ずcolorizeでフィルタするようにしたら、ながーいファイルだとcolorizeの処理に数秒かかってイラっとしたのでこれはやめました。 その代わり

    シンタックスハイライトするフィルタてないかな - (ひ)メモ
  • SSHサーバが受け付けている認証方法を調べるPerlモジュール - (ひ)メモ

    を、CPANに上げしました。 Net::Scan::SSH::Server::SupportedAuth 予め Math::BigInt::GMP をインストールしておくのをお勧めします。じゃないと、Net::SSH::Perl (が使っている Crypt::DH) が遅くて、まともに使えませんので。 このモジュールは、SSH protocol 1と2のそれぞれについて、どの認証方法(パスワード認証か鍵認証か)が受け付け可能か調べるためのものです。 アーカイブには、sample/scan-sshauth.pl というサンプルスクリプトもあるので、モジュールをインストールすれば、コードを書かずとも試してみることができます。 ちなみにこのサンプルスクリプトは、 ホストIPアドレス CIDR に対して調査できるので、出力などは用途にあうようにアレンジして、 外部にさらしているサーバたち イン

    SSHサーバが受け付けている認証方法を調べるPerlモジュール - (ひ)メモ
  • 1