CORESERVER タグの一覧です(2 件)

[Python]CORESERVERのSSH登録を自動化する

このBlogをホスティングしているCORESERVERは手頃で良いんだけど、SSH接続する前にWeb上の管理画面で、SSH接続のためホスト情報をサーバーに登録する必要があり、この作業が結構面倒くさい。一回登録すれば30日は有効なのだけど、その間に別の場所からSSH接続したいときは登録しなおさなければならない。なにか良い方法はないかなと捜していたら自動登録スクリプトを作成している方々がいました。

要はIPアドレス、ID、パスワードなどをPOSTしてあげれば良いみたい。上のエントリーでは、ShellscriptとPerlで書かれていたので、内容を参考にしつつPythonで書きました。

#!/usr/bin/env python
# coding: utf-8

import urllib

def get_ip():
    f = urllib.urlopen('http://dyn.value-domain.com/cgi-bin/dyn.fcg?ip')
    ip = f.read()
    return ip

def regist_host(ip, url):
    userid = 'ACCOUNT'
    passwd = 'PASSWORD'
    keyword = u'SSH登録'
    encoding = 'shift-jis'
    p = [
        ('id', userid),
        ('pass', passwd),
        ('remote_host', ip),
        ('ssh2', keyword.encode(encoding)),
    ]
    
    params = urllib.urlencode(p)
    #print params
    up = urllib.urlopen(url, params)
    #print up.read()

if __name__ == '__main__':
   url = 'https://ss1.coressl.jp/www.sXX.coreserver.jp/jp/admin.cgi'
   ip = get_ip()
   regist_host(ip, url)

一応問題なくホスト登録出来たので大丈夫だとは思いますが、使用する場合は自己責任でお願いします。Pythonのバージョンは2.6で確認取っています。useridとpasswdは各自設定したものを、urlのsXXには自分のサーバ番号を入れて下さい。

クエリ文字列を作成するところでハマった点

クエリ文字列を作成する箇所(urlencode)をPython ライブラリリファレンスを参考にして作っていたのですが、どうも辞書で作るとクエリ文字列の順序が意図したように作れないみたい。

#!/usr/bin/env python
# coding: utf-8

import urllib

#ディクショナリの場合
query = {
    'id': "userid",
    'pass': "passwd",
    'remotehost': "ip",
}

#タプルの場合
query2 = [
    ('id', "userid"),
    ('pass', "passwd"),
    ('remotehost', "ip"),
]

print urllib.urlencode(query)
print urllib.urlencode(query2)

実行結果

% python ~/python/bin/encode.py
remotehost=ip&id=userid&pass=passwd #ディクショナリ
id=userid&pass=passwd&remotehost=ip #タプル

これで小一時間悩みました。


CORESERVERのShell

このblogはCORESERVERで動かしているのですが、一番最初にsshログインして操作しようとした時、

~> ls
-rbash: /bin/ls: restricted: cannot specify `/' in command names

というメッセージが出て訳がわからず焦りました。とりあえずメッセージ内容をgoogle先生に聞いたところ、CORESERVERのShellはデフォルトでrbashという制限付きbashとなっているとのこと。従ってchshコマンドを使用し、デフォルトShellをbashに変更しました。

~> chsh
Changing login shell for hogehoge.
Password: 
Enter the new value, or press return for the default.
        Login Shell [/bin/rbash]: /bin/bash
Shell changed.

これで普通に ls とか cd コマンドが使用出来るようになりました。ふう〜。


PAGE TOP