screenのhardstatus alwayslastlineにIPアドレスを表示する
パソコンを同時に2台くらい使っていると、あるパソコンから別のパソコンにSSHで繋いだりファイル転送したりしたくなる時がある。
その度に、/sbin/ifconfig でinetアドレスを確認するのも面倒なので、screenのhardstatus alwayslastlineに常時表示させておくことにする。
試しに、Pythonで出来るか。
>>> import socket >>> socket.gethostbyname(socket.gethostname()) '127.0.1.1'
知ってるよ!
と、横着は出来ないようで、 get the IP address associated with a network interface (linux only) « Python recipes « ActiveState Code とか http://yamashita.dyndns.org/blog/get-ip-address-with-python/ の様にする必要がある。
ifconfigの出力を加工した方が(見た目が)楽だ。ifconfigの出力から、inetという単語が含まれる行をgrepで選んで、awkでIPアドレス部を取る。
#!/bin/sh /sbin/ifconfig|grep "inet[^6]"|grep -v "127.0.0.1"|awk '{print $1}'|awk -F: '{ print $2 }'|tail -n 1
#!/bin/sh /sbin/ifconfig|grep "inet[^6]"|grep -v "127.0.0.1"|awk '{print $2}'|tail -n 1
ネットワークインタフェースが複数あると、それぞれのIPアドレスが出てくるので、ここは横着して、最後の行のネットワークインタフェースのIPアドレスを取っている。
$ ./printip.sh 172.20.6.12
これをscreenに表示させるために、backtickに登録する。
backtick 1 3600 3600 $HOME/.local/bin/printip.sh hardstatus alwayslastline "(略) $USER@%1` (略)"
とすれば、username@IPアドレス がscreenに常時表示される。