シングルラインでsshでログインしてログイン先でコマンドを実行する

知らなかった。


確認した環境

  • OSX ( Lion 10.7)
  • Ubuntu (10.04)

リモートサーバー( 192.168.100.100 )にログイン後、リモートサーバーでコマンド( cmd )を実行するには次のようにします。

$ ssh 192.168.100.100 "cmd"

リモートサーバーのスペックを確認する

ためしに、リモートログインしてメモリー、ディスク容量、CPUコア数を確認してみます。

$ ssh 192.168.100.100 "free -m ; df -h ; cat /proc/cpuinfo | grep pr | wc -l "
             total       used       free     shared    buffers     cached
Mem:           999        574        424          0        154        332
-/+ buffers/cache:         88        911
Swap:         2924          0       2924
Filesystem            Size  Used Avail Use% Mounted on
/dev/vda1              96G  1.7G   90G   2% /
none                  496M  176K  496M   1% /dev
none                  500M     0  500M   0% /dev/shm
none                  500M   36K  500M   1% /var/run
none                  500M     0  500M   0% /var/lock
none                  500M     0  500M   0% /lib/init/rw
none                   96G  1.7G   90G   2% /var/lib/ureadahead/debugfs
2

ちゃんとできていますね。


forで回したりすると複数台のサーバーにログインしてそれぞれのメモリー、ディスク容量、CPUコア数を確認することもできますね。
一行で!

$ ssh for ((i=100;i<131;i++));do ssh 192.168.100.${i} "free -m ; df -h ; cat /proc/cpuinfo | grep pr | wc -l " ;done

おべんり!