スクリプトの実行
CORE SERVERはクライアントのIPアドレスが変わるたびにSSHやFTPでログインする時に許可が必要(下記の画面)になります。ブラウザにアクセスしなくても良いようにスクリプトを作成しました。言語はpython です。OSは Mac OS X 10.6 です。
1. 設定ファイル(settings.py)を 更新する。
(1) HOST_URL を設定します。
HOST_URL = "www.s**.coreserver.jp"
(2) コントロールパネルにログインするユーザ名とパスワードを設定します。
USER_INFO = {
"id": "***",
"pass": "*******",
}
2. スクリプトを実行します。
python host.py -p ssh
python host.py --protocol ssh
ソースコード
ソースファイルはsettings.py(設定ファイル)、host.py(Mainプログラム)の二ファイルになります。
settings.py
# -*- coding:utf-8 -*- ''' Created on 2011/02/25 @author: nasu ''' #クライアントのIPアドレスを取得する為に使用するURL VALUE_DOMAIN_URL = "http://dyn.value-domain.com/cgi-bin/dyn.fcg?ip" HOST_URL = "www.s**.coreserver.jp" USER_INFO = { "id": "***", "pass": "******", }
host.py
# -*- coding:utf-8 -*- ''' Created on 2011/02/25 @author: nasu ''' import getopt import copy import sys import urllib2,urllib from settings import HOST_URL,USER_INFO,VALUE_DOMAIN_URL def usage(): print("host.py: python host.py [-p|--protocol] protocol\n") print(" -h/--help: 使用方法を表示する") print(" -p/--protocol: ssh もしくは ftp を指定する"); """ 使用方法を記述する。 """ sys.exit(1) # 使用方法を説明した後はプログラムを終了する。 def client_regist(): ''' CORE SERVER に ホスト情報を登録する。 ''' try : opts, args = getopt.getopt(sys.argv[1:], "hp:", ["help", "protocol="]) #引数が指定されていない時の処理を書く。 if not opts: raise getopt.GetoptError("引数が指定されていません") query = copy.deepcopy(USER_INFO) for opt, arg in opts: if opt in ("-h", "--help"): usage() elif opt in ("-p", "--protocol"): if arg == 'ssh': #SSH -s --ssh query['ssh2'] = "SSH登録".encode("utf-8") elif arg == 'ftp': #FTP -f --ftp query['telnet2'] = "FTP登録".encode("utf-8") else: usage() else: usage() value_domain_response = urllib2.urlopen(VALUE_DOMAIN_URL) query['remote_host'] = value_domain_response.read() #クライアントのIPアドレスを取得 #使わないけどデバッグ用に変数を定義 #coreserver へポスト coreserver_admin_response = urllib2.urlopen( "https://ss1.coressl.jp/%s/jp/admin.cgi" % (HOST_URL), urllib.urlencode(query) ) except (getopt.GetoptError,IOError), error: print str(error) usage() if __name__ == '__main__': client_regist()