リモートログイン

  HUAWEI と  SC-02K というホスト名のマシンにSSHでリモートログインしようと思います。但しDHCPを使用しているため、IPアドレスは稀に変更されます。

 それぞれのMACアドレスは HH:HH:HH:HH:HH:HH と SS:SS:SS:SS:SS:SS だとわかっているので、FlashAirのIPアドレスがわからなくなった - あるStray Engineer の日記 で利用した arp-scan を用いてIPアドレスを検索してみることにします。

 外部コマンド netscan は arp-scan を実行しています。また、変数 ${identity}  はSSHに使用する鍵ファイル名です。鍵ファイルについては、 SSHの鍵認証(暫定) - あるStray Engineer の日記 が比較的詳しいかと思います。なお、HUAWEIとSC-02Kはどういう訳か arp-scan で見つけて貰えないことがあるのですが、大抵の場合192.168.0.13 と 192.168.0.14 がIPアドレスとして割り振られているので、見つからなかった場合はそれで試すようにしてみました。

 

#!/bin/bash
sdoc=\
"remote_login               \n"\
" 外部サーバーにsshでログインします\n"\
" [require]                           \n"\
"  host: ホスト名(HUAWEI or SC-02K)            \n"\
"\n\n\n"
export sdoc
host=`getparstr $# "$*" "host"`

if  [ -z ${host} ]; then usage; exit; fi

case ${host} in
 HUAWEI) 
MAC=HH:HH:HH:HH:HH:HH ;
identity="/home/user/.ssh/id_rsa.huawei" ;
IP=192.168.0.13 ;;
SC-02K)
MAC=SS:SS:SS:SS:SS:SS ;
identity="/home/user/.ssh/id_rsa.sc02k" ;
IP=192.168.0.14 ;;
*) echo "予期せぬ ホスト が選択されました" ;; esac ip_address=`netscan 2>&1 | grep ${MAC} | awk '{print $1}'` if [ -z ${ip_address} ] then  
ip_address=${IP} else echo ${ip_address} | od -c fi ssh -i ${identity} -p 8022 ${ip_address}