shell

A collection of 4 posts
shell

ProxyChains をちょっと便利に使う

ProxyChains という、プログラムの TCP/DNS 通信を、指定した socks に通してくれるツールがあります。 よく下記のような使用例が書かれてます。 $ proxychains telnet 192.0.2.11 80 $ proxychains ssh 192.0.2.11 $ proxychains curl http://example.com/ これ、proxychains でシェル自体を起動しちゃえばいいんじゃないかと思ってやってみました。 $ tor & $ proxychains bash $ curl -kLs https://check.torproject.org/ | grep -i congratulations [proxychains] DLL init [proxychains] DLL init [proxychains]
shell

シェルスクリプトと同階層のファイルを扱う時

シェルスクリプトの中で、そのスクリプトと同階層のファイルを扱いたい場合、下記のような事をよくやると思う。 #!/bin/sh DIR_BASE=`dirname ${0}` cat ${DIR_BASE}/file1 cat ${DIR_BASE}/file2 ただこのやり方だと、./script.sh のように実行した場合、DIR_BASE には . が入ってしまう。 ひとたびスクリプトの中でディレクトリ移動してしまうと、同階層にもどってこれないので、DIR_BASE は下記のように得た方が良い。 #!/bin/sh DIR_BASE=$(cd $(dirname ${0}); pwd)
shell

シェルスクリプト (sh, bash) での getopts の雛型

シェルスクリプトで引数の処理をしたい場合は、getopts が便利ですね。 使い方を忘れてしまいがちで、かつ、決まった形式で使うことが多いので、メモついでに雛型を作っておきます。 雛型 #!/bin/sh # # 20111207 # getopts test # PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/sbin:/usr/sbin export PATH # # usage # _usage() { #(*1) echo "usage:" echo "${0} -a -b HOGE [-c] [-d FOO] [BAR]" exit 1 } # # getopts # while getopts :ab:cd: OPT;
1 min read
tmux

tmux+zsh で SSH_AUTH_SOCK を手軽に更新する

エージェントフォワーディングを有効にしてログインした先で tmux にアタッチした際、既存のシェルの SSH_AUTH_SOCK が更新されません。 これを、ショートカットキーで手軽に更新する方法です。 以下を .zshrc あたりに書いておくと、アタッチした後 Alt+s するだけで、SSH_AUTH_SOCK が更新されます。 if [ -n "${TMUX}" ]; then # 既存のシェルの SSH_AUTH_SOCK を更新 function update_ssh_auth_sock() { NEWVAL=`tmux show-environment | grep "^SSH_AUTH_SOCK" | cut -d"=" -f2` if [ -n "${NEWVAL}" ]; then SSH_