魔術師です。
SSHクライアントのターミナルソフトとして Poderosa を使っています。
TeraTerm と違ってバッチ処理は出来ませんが一応マクロ機能が付いているので Poderosa 複数サーバー自動ログインするマクロの SSH キー対応版を作りました。
最新版では有償化してマクロ機能も外されているので古いバージョン 4.4.5 を利用しています。
前から作りたかったのですがやっと手を付けました。
単体のサーバーへのログインは出来るようなマクロは作っていましたが、サーバーの数が多くて何度も呼び出して実行する必要があって面倒くさいなと思っていたのです。
サーバー側の SSH 設定は root ではパスワード認証ではログインできないように SSH キーでの認証のみログイン出来るように設定しています。
完全 SSH キー認証にすれば安全だけどいざという時にログイン出来なくなってはいけないので root のみキー認証にしています。。
sshd.conf
PermitRootLogin without-password
Poderosa 複数サーバー自動ログインマクロ SSH キー対応版
==========
/**
* 複数の接続を一気に行うマクロ
* https://w.atwiki.jp/keiplus/pages/81.html
* MultiAutoLogin.js
* Poderosa マクロ で複数サーバーへドンドン接続しちゃう!方法 https://blog.gti.jp/post-159/
*/
import Poderosa;
import Poderosa.ConnectionParam;
import Poderosa.Terminal;
import Poderosa.Macro;
import Poderosa.View;
import System.Drawing;
import System.Threading;
var env = new Environment();
var ENCODE_TYPE = EncodingType.UTF8;
var NEWLINE_CHAR = NewLine.LF;
var SSH_PORT = 22;
var hostList = new Array();
var hostip = "192.168.0.1";
var loginuser = "USER";
var loginpw = "PASSWORD";
var loginport = "22";
//
// サーバー設定
//
hostList[0] = new Array();
hostList[0]['host'] = "hoostname"; // ドメイン OR IP
hostList[0]['id'] = "root"; // ログインアカウント
hostList[0]['pwd'] = ""; // ログインパスワード
hostList[0]['authtype'] = 1; // 認証タイプ 0: パスワード 1: SSH キーファイル
hostList[0]['key'] = "シークレットキーファイル名"; // 秘密鍵ファイル
hostList[0]['title'] = "サブタイトル"; // タブのタイトル
hostList[0]['port'] = 22; // SSHのポートを変更している場合は設定する
hostList[0]['encode'] = EncodingType.UTF8; // エンコードがデフォルト値以外の場合設定する
hostList[0]['newline_char'] = NewLine.LF; // 改行コードがデフォルト値以外の場合設定する
//hostList[0]['commands'] = new Array(); // コマンド発行の場合必要(任意)
//hostList[0]['commands'][0] = "pwd"; // コマンド1(任意)
//hostList[0]['commands'][1] = "ls -lat"; // コマンド2(任意)
hostList[1] = new Array();
hostList[1]['host'] = "hostname"; // ドメイン OR IP
hostList[1]['id'] = "root"; // ログインアカウント
hostList[1]['pwd'] = ""; // ログインパスワード
hostList[1]['authtype'] = 1; // 認証タイプ 0: パスワード 1: SSH キーファイル
hostList[1]['key'] = "シークレットキーファイル名"; // 秘密鍵ファイル
hostList[1]['title'] = "サブタイトル"; // タブのタイトル
hostList[1]['port'] = 22; // SSHのポートを変更している場合は設定する
hostList[1]['encode'] = EncodingType.UTF8; // エンコードがデフォルト値以外の場合設定する
hostList[1]['newline_char'] = NewLine.LF; // 改行コードがデフォルト値以外の場合設定する
//hostList[1]['commands'] = new Array(); // コマンド発行の場合必要(任意)
//hostList[1]['commands'][0] = "pwd"; // コマンド1(任意)
//hostList[1]['commands'][1] = "ls -lat"; // コマンド2(任意)
hostList[2] = new Array();
hostList[2]['host'] = "hostname"; // ドメイン OR IP
hostList[2]['id'] = "root"; // ログインアカウント
hostList[2]['pwd'] = ""; // ログインパスワード
hostList[2]['authtype'] = 1; // 認証タイプ 0: パスワード 1: SSH キーファイル
hostList[2]['key'] = "シークレットキーファイル名"; // 秘密鍵ファイル
hostList[2]['title'] = "サブタイトル"; // タブのタイトル
hostList[2]['port'] = 22; // SSHのポートを変更している場合は設定する
hostList[2]['encode'] = EncodingType.UTF8; // エンコードがデフォルト値以外の場合設定する
hostList[2]['newline_char'] = NewLine.LF; // 改行コードがデフォルト値以外の場合設定する
//hostList[2]['commands'] = new Array(); // コマンド発行の場合必要(任意)
//hostList[2]['commands'][0] = "pwd"; // コマンド1(任意)
//hostList[2]['commands'][1] = "ls -lat"; // コマンド2(任意)
//
// ログイン処理
//
for (var i = 0; i < hostList.length; i++) {
var ssh_port_num = SSH_PORT;
if (hostList[i]['port'] != null && hostList[i]['port'] != SSH_PORT) {
ssh_port_num = hostList[i]['port'];
}
var encoding_type = ENCODE_TYPE;
if (hostList[i]['encode'] != null && hostList[i]['encode'] != ENCODE_TYPE) {
encoding_type = hostList[i]['encode'];
}
var newline_char = NEWLINE_CHAR;
if (hostList[i]['newline_char'] != null && hostList[i]['newline_char'] != NEWLINE_CHAR) {
newline_char = hostList[i]['newline_char'];
}
var conn = connect(hostList[i]['host'], ConnectionMethod.SSH2, ssh_port_num, encoding_type, newline_char, hostList[i]['authtype'], hostList[i]['id'], hostList[i]['pwd'], hostList[i]['key'], hostList[i]['title']);
if (hostList[i]['commands']) {
if (hostList[i]['commands'].length > 0) {
wait(conn, "$");
for (var j = 0; j < hostList[i]['commands'].length; j ++) {
sendln(hostList[i]['commands'][j], conn);
}
}
}
}
env.Util.MessageBox("処理終了しました!");
function connect(host, method, port, encoding, newline_char, authtype, id, password, prikey, title) {
var param = new SSHTerminalParam(method, host, id, password);
if ( authtype == 1 ){
param.AuthType = AuthType.PublicKey;
param.IdentityFile = prikey;
}
else {
param.AuthType = AuthType.Password;
}
param.Caption = title+"["+host+"]";
param.Port = port;
param.Encoding = encoding;
param.TransmitNL = newline_char;
var connection = env.Connections.Open(param);
return connection;
}
function sendln(s, connection) {
connection.TransmitLn(s);
}
function wait(connection, command) {
Thread.Sleep(10);
var res = connection.ReceiveData();
while(res.indexOf(command) == -1) {
Thread.Sleep(10);
res += connection.ReceiveData();
}
}
==========
会社の元々はバイク友、今はパソコン友が珍しく魔術師の席まで来て第10世代 Core i5-10400 マシンを手に入れたと話をした。
ドスパラの BTO マシンらしくて、5月連休に注文して入ったらしい
15年ぶりのマシンの更新らしいけど、かなり速いらしい。
そうだろうな、Core i5-10400 も 6C12T で狙ってた石なんだよね
BTO で GPU も載っているので BTO もありだよなとは思っていました。
こりゃ負けれんなあ。
けれど世界的な半導体不足で値段が上がっていますので早く構成を確定しなければ。
セールも近いしね。
新しい Ryzen APU の発表があったけど内蔵 GPU の更新があっていいのだけど 8月出荷で遅いんだよね。
新しい 4K ディスプレイが届きました。
ViewSonic VX3211-4K-MHD-7 ブラック [31.5型ワイド液晶ディスプレイ(4K対応)]
受け取るだけでも何日もかかってしまいました。
さすが受け取った箱は巨大です。まだ出していません。
ディスプレイの下にガラスのディスプレイの置き台を置いているのですが、これを外さないといけません。
こんなの
★期間限定ポイント10倍変倍★【送料無料】FITUEYES 机上台 モニター台 モニターライザー キーボード収納 幅385mm 内径300mm 高さ調整可能 透明 強化ガラス製 肩こり軽減 DVDレコーダー収納 ブルーレイレコーダー DT103801GC
台があって少し高目なのですが大きな画面になると見上げる形になって疲れてはいけないので目の高さがディスプレイの上辺になるように調整しようと思っています。
台の上にスピーカーとか Web カメラとかミニ PC とか色々と置いているので整理から始めないといけません。
ディスプレイの上にも棚を設けてものがあるのでここに置いているものも整理しないといけません。
【送料無料】キングジム 棚 ディスプレイボード 黒 DB-500-BK 【jan 4971660773428】
設置はもう少し先になりそうですが
初期不良の確認もしないといけません。
昨日の晩は焼そばでした。ソフト麺の焼そばです。
いつもながら野菜が山盛りで麺より野菜が多いと思ったのですが、火が通るとしんなりしていい感じになりました。
フライパンで下ごしらえしてホットプレートで焼きながら食べました。
案外パラッと焼けていて美味しかったです。
なくなったネジ式のキーホルダーのネジは購入できることになりました。
早速、代金を振込んで送ってもらいます。
キリンの自販機で麦茶を現金を準備して買いました。
LINE に接続してポイントが付きました。
Amazon プライムデーが今年は 7/21-22 にあるみたいです。
毎年 7月頭なので少し早いですね。
これは気合いを入れねば。
楽天モバイルの話
180日間利用のない回線は強制的に解約されるようになったそうだ
これは時々電源を入れて使わないといけませんね、0円維持も手間が掛かる。
今日はオフィスの消毒当番も終わったのでリモートです。
がんばりましょう。
人気記事の一覧のある
トップへ
楽天のサービス紹介
ページへ飛ぶ
星影の魔術師に
応援のクリックをポチッとお願いします。
皆さんの、協力に感謝しています。