はじめに
Cisco IOSなどのNW機器を初期設定する際、USBコンソールケーブル経由で行うのが一般的かと思います。
他の方法として、以下の通りターミナルサーバ経由でSSH/Telnet接続し、「オンライン」の機器とほぼ同じ要領で初期設定することも可能です。
[ 作業PC ] - ( Ethernet ) - [ ターミナルサーバ ] - ( コンソール ) - [ NW機器 ]
ただし、オンライン接続といくつか異なる点があり、スクリプトがそのまま使えなかったりします。
- ユーザ名/パスワードの入力方法の違い
ターミナルサーバの設定で入力が省略できたり、プロンプトがターミナルサーバ側の仕様に依存するため、ユーザ名のプロンプトがlogin:になったりする。
(IOSの場合はUsername:やusername:) - プロンプト表示の違い
オンライン接続の場合、ログイン時、自動的にプロンプトが表示されますが、ターミナルサーバの場合、明示的にEnterキーを押す必要がある。 
NW機器を操作するためのPythonライブラリであるnetmikoは、ターミナルサーバ経由のログインもサポートしており、今回はログインしてshowコマンド実行までの例をご紹介します。
事前準備
あらかじめ、以下コマンドでnetmikoをインストールします。
pip install netmiko
Pythonコード
補足はコード内に記載していますが、ポイントは以下の3点です。
- 
device_typeをterminal_serverに指定 (SSHでターミナルサーバへ接続) - 途中で改行コードを送信
 - ログイン後、Redispatchという処理を行う
 
terminal_server.py
from netmiko import ConnectHandler
from netmiko import redispatch
import time
# デバイス情報を指定
device = {
    'device_type': 'terminal_server',    # 'cisco_ios'ではなく必ずこの値に指定
    'ip': '192.168.100.200',   # terminal serverのIPアドレス
    'port': 3001,   # NW機器に割り当てられたTCPポート番号
    'username': 'admin',   # terminal serverのユーザ名
    'password': 'password',   # terminal serverのパスワード
    'secret': 'test',   # NW機器のenableパスワード
} 
# terminal server経由でNW機器に接続
net_connect = ConnectHandler(**device)
# 改行コードを送信し、後続処理のためにプロンプトを表示させる
net_connect.write_channel("\r")
time.sleep(1)
net_connect.write_channel("\r")
time.sleep(1)
# device_typeを`cisco_ios`に変更し、これ以降Cisco IOS用のクラスを使って処理を行う
redispatch(net_connect, device_type='cisco_ios')
# enableパスワードを入力
net_connect.enable()
# showコマンドを送信
output = net_connect.send_command('show run')
print(output)
# 切断
net_connect.disconnect()
実行結果
send_commandで指定した、show runの出力結果が表示されます。
'Building configuration...\n\nCurrent configuration : 2601 bytes\n!
(省略)