以前にPythonを利用してスイッチ機器の設定情報を取得したことがあります。
PythonでCiscoスイッチのInterface情報をSQLへ一括インポートする【Netmiko+Pandas】
https://syachiku.net/python_cisco_netmiko/
今回はPythonではなくPowerShellを使って同じようにSSH接続ができるか試してみました。
クライアント証明書を利用して、パスワード入力を省略する方法であればすぐに見つかったのですが、接続時にパスワードを入力する方法がなかなか見つからなかったのでメモとして残します。
1. Posh-SSHモジュール
Windows10ではSSHクライアントも標準でインストールされているのですが、先ほどのパスワード入力部分がクリアできません。
そのため、今回は PowerShell から SSH/SFTP/SCP が使えるモジュールの「Posh-SSH」を利用します。
GitHub - darkoperator/Posh-SSH: PowerShell Module for automating tasks on remote systems using SSH
PowerShell Module for automating tasks on remote systems using SSH - darkoperator/Posh-SSH
2. Posh-SSHモジュールのインストール
Posh-SSHモジュールのインストールを行います。
管理者でPowerShellを立ち上げてInstallします。
> Install-Module Posh-SSH
3. SSH接続を試す
では実際にSSH接続できるか試してみましょう。
以下のサンプルスクリプトを用意して試します。
TargetIPやTargetIPやPASSWDなどは適宜変更してください。
$TargetIP = "192.168.1.1"
$PASSWD = "password"
$USER = "cisco"
$COMMAND = "show intarface status"
# 資格情報の作成
$SecPasswd = ConvertTo-SecureString $PASSWD -AsPlainText -Force
$Credentials = New-Object System.Management.AUtomation.PSCredential($USER, $SecPasswd)
# SSH接続の実施
$SessionID = New-SSHSession -ComputerName $TargetIP -Credentials $Credentials
# コマンド実行
$Response = Invoke-SSHCommand -Index $SessionID.sessionid -Command $COMMAND
Write-host ([string]$Response.Output)
今回のサンプルはCiscoのスイッチを想定していますが、パラメータやコマンドを変更すればLinuxサーバなどでも利用できると思います。
PowerShellの学習に役立つ書籍
初心者がPowerShellを学習するには以下の書籍が役立ちます。PowerShellの学習書がすくないなか、基礎から応用までひととおりの内容を学習することができます。
今回は以上となります。
コメント