Excel(VBA)や、vbsなどからSSH接続をオブジェクトとして作成できるオープンソースのVbaSSHLibraryを使うと以下のようなことができます。
DimやCreateObjectで VbaSSHインスタンスを作成し、
Openで接続、Executeでコマンド実行というシンプルさ
自分のPCで使えるようにするには、
をダウンロードしてきて ZIPファイルを任意の場所に展開、
私のところの環境では \00_tools\vbassh へ展開しました。
コマンドプロンプトを管理者モードで起動
展開したフォルダ内に移動します。
cd \\00_tools\vbassh
VbaSSHLibraryはActiveX型式のライブラリなのでシステム登録する必要があります。
RegAsm.exeコマンドにてシステムに登録します。
“C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe” VbaSSHLibrary.dll /tlb:VbaSSHLibrary.tlb /codebase
.netフレームワークがインストールされていないなどの理由でエラーが発生したら以下のURLから.netフレームワークをインストールしてください。
Windows 用の Microsoft .NET Framework 4.7.2 オフライン インストーラー
https://support.microsoft.com/ja-jp/help/4054530/microsoft-net-framework-4-7-2-offline-installer-for-windows
RegAsm : error RA0000 : 入力アセンブリ ‘VbaSSHLibrary.dll’ またはその依存関係の 1 つが見つかりません。と表示されてしまうときは
おそらく途中の手順を飛ばしています。
別PCにセットアップしようとして、横着して手順をすっ飛ばしていました。
VbaSSHLibrary.dll があるフォルダに移動して再試行してみてください。
サンプルプログラム
Excel(VBA)のコードウィンドウを開いて、ツール – 参照で参照設定を開きます。
参照ボタンを押下し、先程インストールしたディレクトリ内にある VbaSSHLibrary.tlbを選択、参照可能なライブラリ ファイルから VbaSSHLibraryにチェックが付いていることを確認します。
以下のようなコードでExcel(VBA)からSSH接続できます。
ダウンロードはこちらから
“VBA_Sample.txt” をダウンロード VBA_Sample.txt – 1872 回のダウンロード – 779.00 B
Public Sub 使用方法()
Dim SSH As New VbaSSHLibrary.VbaSSH
With SSH
.Open "サーバー1のIPアドレス", "ポート番号", "id", "pw"
Debug.Print .Execute("cd /;ls -la")
.Close
End With
End Sub
Public Sub サンプル()
Dim Ssh1 As New VbaSSHLibrary.VbaSSH
Dim Ssh2 As New VbaSSHLibrary.VbaSSH
Dim Ssh3 As New VbaSSHLibrary.VbaSSH
Ssh1.Open "192.168.0.100", 22, "user1", "123456"
Ssh2.Open "192.168.0.101", 22, "user2", "password"
Ssh3.Open "192.168.0.102", 2222, "user3", "qwerty"
Debug.Print Ssh1.Execute("cd /;ls -la")
Debug.Print Ssh2.Execute("tar cvf hoge.tar *.php")
Debug.Print Ssh3.Execute("adb shell input touchscreen tap 123 456")
Ssh1.Close
Ssh2.Close
Ssh3.Close
End Sub
Executeで任意のコマンドが動かないときは
手動でssh接続しコマンドを実行すると正常に動くのに、VbaSSHLibrary経由でコマンドを実行すると正しく動かないときはリモートサーバーの設定が残念なことになっている可能性があります。
こちらを読むことで解決できる可能性があります。
コメント