pythonでtelnet

telnetlibというライブラリが標準で入っている。
最近、よく使うのでメモ
telnet で192.168.0.10に入ってsu - してhostnameを見るにはこういう感じ

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
import telnetlib

host = 192.168.0.10
username = "testuser"
password = "testpass"
rootpassword = "rootpass"

tel = telnetlib.Telnet(host)
tel.read_until("login:")
tel.write(username + "\n")
tel.read_until("Password: ")
tel.write(password + "\n")
print tel.read_until
tel.write("su -" + "\n")
tel.read_until("Password:")
tel.write(rootpassword + "\n")
tel.write("hostname" +"\n")
print tel.read_until()
tel.write("exit" + "\n") # exit root
tel.write("exit" + "\n") # exit user
tel.close()

python2.5を想定(solaris10で標準のやつ、つまりsolarisは標準でこういうことができるようになった、perlをビルドしてたころから考えると信じられないくらい便利になったものだと思う、(大抵、技術以上に政治的な許可の取得が面倒な)インストールしなくても使える)
telnetが使える環境でしか使えないんですが、
teratermのマクロを考えるよりも、こちらを考える時間方が長くなりました。
ただ、改行コードを書くのが面倒なんだよな。
rubyのNet::Telnetだと改行コードは要らないんだが、悔しいことに標準でsolaris10に入っていないから仕事で使うには微妙なところ。