screen上で実行する。
対象サーバーはssh鍵認証を事前に設定しておく
screen.py
# !/usr/bin/python
import os
import time
from subprocess import Popen, PIPE, STDOUT
_SERVER_LIST = (#('hostname', 'ipaddress'),
('s1', '192.168.0.1'),
('s2', '192.168.0.2'),
('s3', '192.168.0.3'),)
_SSH_USER = 'admin'
_SUBPROCESS_ARGS = {'stdin' : None,
'stdout' : PIPE,
'stderr' : STDOUT,
'shell' : False,}
# ----------------------------------------------------------
# SCREEN
# ----------------------------------------------------------
def screen_ssh():
for server_name, server_ip in _SERVER_LIST:
screen_ssh = ('screen',
'-X',
'eval',
'split',
'focus',
'screen',
'title %s' % server_name,
'stuff "ssh -l %s %s\n"' % (_SSH_USER, server_ip))
p = Popen(screen_ssh, **_SUBPROCESS_ARGS)
time.sleep(1.0)
for i in p.stdout : print i
# ----------------------------------------------------------
# MAIN
# ----------------------------------------------------------
if os.environ['TERM'] == "screen" :
screen_ssh()
else :
print "not screen"