2012年8月2日木曜日

PoderosaのマクロでSSHログイン後にコマンド実行する方法

import Poderosa;
import Poderosa.ConnectionParam;
import Poderosa.Terminal;
import Poderosa.Macro;
import Poderosa.View;
import System.Threading;

var env = new Environment();

// hosts info
var hosts = [{
  hostname: 'hostname',
  ip: 'xxx.xxx.xxx.xxx',
  id: 'username',
  pass: 'password',
  cmd: 'ls -ltr',
  title: 'ls'
 }
]

// Login
var l = hosts.length;
for (var i = 0; i < l; i++) {
 var con = connect(hosts[i].hostname, ConnectionMethod.SSH2, 22, EncodingType.UTF8, hosts[i].id, hosts[i].pass, hosts[i].title);
 wait("$");
 sendln(hosts[i].cmd);
}

function sendln(s) {
 con.TransmitLn(s);
}
 
function wait(s) {
 Thread.Sleep(10);
 var res = con.ReceiveData();
 while(res.indexOf(s) == -1) {
 Thread.Sleep(10);
  res += con.ReceiveData();
 }
}

function connect(host, method, port, encoding, id, password, title) {
 var param = new SSHTerminalParam(method, host, id, password);
 param.Caption = title+"["+host+"]";
 param.Port = port;
 param.Encoding = encoding;
 var connection = env.Connections.Open(param);
 return connection;
}

wait("$")は「$」という文字列が表示されるまで待つメソッドです
たまーに動作しないこともあるので、Thread.Sleep(5000);とかで普通に5秒止めたほうがいい場合もあります
sendlnメソッドは引数で渡したコマンドを実行するメソッドです

あとは以下をダウンロードしてPoderosaにマクロを登録するだけです

http://www.poderosa.org/download/plugins/Macro402.tar.gz
マクロの登録方法は検索すれば出てくると思いますw

参考までに

0 件のコメント:

コメントを投稿