プロジェクト

全般

プロフィール

Poderosa » Poderosa_Macro_combo_login.js

コンボボックスで選択したホストにログインする。 - kanata, 2025/04/13 13:50

 
//----------------------------------------------------------------------------//
// Poderosa_Macro_combo_login.js ver 0.1
// コンボボックスで選択したホストにログインする。
// 2007.02.01 kanata
//----------------------------------------------------------------------------//

import Poderosa;
import Poderosa.Macro;
import Poderosa.ConnectionParam;
import Poderosa.Terminal;
import System;
import System.IO;
import System.Drawing;
import System.Threading;
import System.Windows.Forms;

var env = new Environment();

class MyForm extends Form
{
/* メンバ設定(5個まで) */
/* ※ここの値をカスタマイズする */
var login_host = [ "192.168.10.1" , "192.168.10.2" , "192.168.10.3" , "192.168.10.4" , "192.168.10.5" ];
var login_user = [ "user01" , "user01" , "user01" , "user01" , "user01" ];
var login_passwd = [ "passwd" , "passwd" , "passwd" , "passwd" , "passwd" ];
var login_rootpasswd = [ "rootpass" , "rootpass" , "rootpass" , "rootpass" , "rootpass" ];

var ctext1 = [ login_host[0]+"("+login_user[0]+")" ,
login_host[1]+"("+login_user[1]+")" ,
login_host[2]+"("+login_user[2]+")" ,
login_host[3]+"("+login_user[3]+")" ,
login_host[4]+"("+login_user[4]+")" ];
var btn1 : MyButton;
var combo1 : ComboBox;
var text1 : Label;
var select_num = "";
function MyForm()
{
super();
Size = new System.Drawing.Size( 170, 120 );
Location = new Point( 200, 200 );
StartPosition = FormStartPosition.Manual;

// テキストフィールドの表示
text1 = new Label();
text1.Location = new Point( 5, 5 );
text1.Text = "ログインホスト選択";
Controls.Add( text1 );

// リストボックスの場合
combo1 = new ComboBox();
combo1.Width = 150;
combo1.Location = new Point( 5, 28 );
combo1.Items.AddRange( ctext1 );
combo1.Text = ctext1[0];
Controls.Add( combo1 );

// ボタン
btn1 = new MyButton();
btn1.Text = "open";
btn1.Location = new Point( 5, 60 );
Controls.Add( btn1 );
}
// ダイアログがxを押されて閉じられたとき
protected function CheckCloseDialog( e : FormClosingEventArgs )
{
// ウィンドウを閉じる
MyForm( Parent ).Close();
}
class MyButton extends Button
{
protected function OnClick( e : EventArgs )
{
// ウィンドウを閉じる
select_num = MyForm( Parent ).combo1.SelectedIndex;
MyForm( Parent ).Close();
}
}
}

ssh_connection();

function ssh_connection() {

// フォームを表示する
var f : MyForm = new MyForm();
f.ShowDialog();

// フォームが閉じられた対策
if ( f.select_num.Length == 0 )
{
return;
}
var param = new SSHTerminalParam( ConnectionMethod.SSH2, f.login_host[f.select_num] , f.login_user[f.select_num] ,f.login_passwd[f.select_num] );
/* Encoding */
param.Encoding = EncodingType.UTF8;
/* rename tab */
//param.Caption = tab_name;
/* Cconnection Open SSH */
var c = env.Connections.Open(param);
if ( f.login_rootpasswd !== "" )
{
/* 100ミリ秒待機 */
Thread.Sleep( 100 );
/* suコマンド発行 */
c.TransmitLn( "su -");
var r = c.ReceiveData();
/* パスワード入力待ち */
while(r.indexOf("Password:")==-1){
r = c.ReceiveData(); //waiting prompt for account
}
/* パスワード入力 */
c.TransmitLn( f.login_rootpasswd[f.select_num] );
}
}
(2-2/6)