Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Python telnetlibとその応用例
@tkshnt
2013/10/31 #ssmjp
Python telnetlib
• Pythonの標準ライブラリに含まれる
• 接続先IPアドレス、ユーザ名、パスワードを引
数にコネクト
• 入力コマンドを並べると、順に実行
• 出力結果をファイルに落とす
ConfigParser
• Pythonの標準ライブラリ
• 設定ファイルに書いてある値を読み込む
• 設定ファイルのフォーマットはwindowsのINI
ファイルと同じ
[entry]
var=value
• 複数のエントリを設定できる
例
• Python telnetlibにより、外部からのログイン
数を取得
• ConfigParserの利用で、アカウントとパスワー
ドの管理
みずいろの箱
• 認証数を取得しグラフ化したい
→MIBにあるけどNot accessible!
→telnetで同じ値は参照できる
→Telnetのログを取得して整形すればいい!!
• 最初はシェルスクリプトで作成、保守が面倒
→Python...
ソースコード
#!/usr/bin/python
import sys
import telnetlib
import ConfigParser
CONF_FILE = "conf.ini"
HOST = "192.168.100.10"
co...
黒い回文の箱
•
•
•
•

普通にlsが使える!
ページャーのオン・オフコマンドを使う
ログイン後、ページャーをオフ
コマンドを実行後に、ページャーをオンに戻す
ソースコード
#!/usr/bin/python
import sys
import telnetlib
import ConfigParser
HOST = "192.168.100.1"
CONF_FILE = "conf.ini"
con...
アクセスポイント
• Syslog取得のため
• SNMPはサポートされているけど、動作が謎
• 管理サーバやコントローラが無いので、個別
にコンソールにログイン
• アクセスポイントのIPアドレスを引数にして実
行
ソースコード
#!/usr/bin/python
import sys
import telnetlib
import datetime
import ConfigParser
CONF_FILE = "conf.ini"
HOST = raw...
まとめ
• Python telnetlibの実例
– 決まった作業を自動化するのに使える

• ConfigParser
– 生パスワードをスクリプトに埋め込むのを回避
– 別ファイルから読み込む
– 理想は、暗号化して格納、実行時に復号
Upcoming SlideShare
Loading in …5
×

Ssmjp20131031

930 views

Published on

#ssmjpの発表スライド

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Ssmjp20131031

  1. 1. Python telnetlibとその応用例 @tkshnt 2013/10/31 #ssmjp
  2. 2. Python telnetlib • Pythonの標準ライブラリに含まれる • 接続先IPアドレス、ユーザ名、パスワードを引 数にコネクト • 入力コマンドを並べると、順に実行 • 出力結果をファイルに落とす
  3. 3. ConfigParser • Pythonの標準ライブラリ • 設定ファイルに書いてある値を読み込む • 設定ファイルのフォーマットはwindowsのINI ファイルと同じ [entry] var=value • 複数のエントリを設定できる
  4. 4. 例 • Python telnetlibにより、外部からのログイン 数を取得 • ConfigParserの利用で、アカウントとパスワー ドの管理
  5. 5. みずいろの箱 • 認証数を取得しグラフ化したい →MIBにあるけどNot accessible! →telnetで同じ値は参照できる →Telnetのログを取得して整形すればいい!! • 最初はシェルスクリプトで作成、保守が面倒 →Python telnetlib • コマンドの出力結果が1画面で止まるので、ス イッチのコマンドで最後まで流すようにする • conf.iniにログインユーザとパスワードを記述
  6. 6. ソースコード #!/usr/bin/python import sys import telnetlib import ConfigParser CONF_FILE = "conf.ini" HOST = "192.168.100.10" conf = ConfigParser.SafeConfigParser() conf.read(CONF_FILE) section_name = “sw2" user = conf.get(section_name, "user") password = conf.get(section_name, "password") tn = telnetlib.Telnet(HOST) tn.read_until("login: ") tn.write(user + "¥n") if password: tn.read_until("Password:") tn.write(password + "¥n") tn.write("show access-defender client¥n") tn.write("0¥n") tn.write("exit¥n") f = file('log4', 'w') f.write(tn.read_all()) f.close() [sw2] user=admin password=admin2
  7. 7. 黒い回文の箱 • • • • 普通にlsが使える! ページャーのオン・オフコマンドを使う ログイン後、ページャーをオフ コマンドを実行後に、ページャーをオンに戻す
  8. 8. ソースコード #!/usr/bin/python import sys import telnetlib import ConfigParser HOST = "192.168.100.1" CONF_FILE = "conf.ini" conf = ConfigParser.SafeConfigParser() conf.read(CONF_FILE) section_name = “sw3" user = conf.get(section_name, "user") password = conf.get(section_name, "password") tn = telnetlib.Telnet(HOST) tn.read_until("login: ") tn.write(user + "¥n") if password: tn.read_until("Password:") tn.write(password + "¥n") tn.write("set terminal pager disable¥n") tn.write("show mac-address-table vlan 31¥n") tn.write("set terminal pager¥n") tn.write("exit¥n") f = file('log2', 'w') f.write(tn.read_all()) f.close() [sw3] user=admin password=admin3 [sw2] user=admin password=admin2
  9. 9. アクセスポイント • Syslog取得のため • SNMPはサポートされているけど、動作が謎 • 管理サーバやコントローラが無いので、個別 にコンソールにログイン • アクセスポイントのIPアドレスを引数にして実 行
  10. 10. ソースコード #!/usr/bin/python import sys import telnetlib import datetime import ConfigParser CONF_FILE = "conf.ini" HOST = raw_input("Remote Host: ") conf = ConfigParser.SafeConfigParser() conf.read(CONF_FILE) section_name = “ap1" user = conf.get(section_name, "user") password = conf.get(section_name, "password") # main name of filename fmain = "log" # get execution timestamp d = datetime.datetime.today() exectime = d.strftime("%Y%m%d%H%M") tn = telnetlib.Telnet(HOST) tn.read_until("login: ") tn.write(user + "¥n") if password: tn.read_until("Password: ") tn.write(password + "¥n") tn.write("get syslog¥n") tn.write("exit¥n") f = open(HOST + "." + fmain + "." + exectime, 'w') f.write(tn.read_all()) f.close() [sw3] user=admin password=admin3 [sw2] user=admin password=admin2 [ap1] user=admin password=admin1
  11. 11. まとめ • Python telnetlibの実例 – 決まった作業を自動化するのに使える • ConfigParser – 生パスワードをスクリプトに埋め込むのを回避 – 別ファイルから読み込む – 理想は、暗号化して格納、実行時に復号

×