IPのpythonプログラムの設定

1980 ワード

IP(有線)を修正するのは面倒なことで、特にノートパソコンを抱いて異なるローカルエリアネットワークの間を歩き回る.IPを修正するPython 3プログラムを紹介し、使用経験を紹介します.コードは次のとおりです(setip.py):
'''  Windows netsh        
setip.py [config] 
'''

import sys 
import os 


def setDns(config):
    '''config = (name,dns)'''
    if config[1]:
        cmd = 'netsh interface ip set dns name=%s'\
                 ' source=static %s primary' % config
    else:
        cmd = 'netsh interface ip set dns name=%s source=dhcp' % config[0]

    os.system(cmd)

def setIp(config):
    '''config = (name,ip,mark,gateway)'''
    if config[1]:
        cmd = 'netsh interface ip set address name=%s'\
                    ' source=static %s %s %s 1' % config
    else:
        cmd = 'netsh interface ip set dns name=%s source=dhcp' % config[0]

    os.system(cmd)

def setConfig(config):
    setIp(config[0:4]);
    setDns((config[0], config[4]))
    
def loadConfig(filename):
    with open(filename) as f:
        name = "    "
        ip = f.readline().strip()
        mark = f.readline().strip()
        gateway = f.readline().strip()
        dns = f.readline().strip()
        return (name, ip, mark, gateway, dns)
    
if __name__ == "__main__":
    if len(sys.argv) > 1:
        ipConfig = loadConfig(sys.argv[1]) 
    else:
        ipConfig = ("    ", "", "", "", "")
        
    setConfig(ipConfig)
    os.system("pause")

プログラムはコマンドラインパラメータで実行され、パラメータはプロファイルです.プログラムはプロファイルから設定を読み出し、netshコマンドで設定します.プロファイルがない場合は自動取得に設定します.
注意点:
  • プログラムはnetsh命令に依存し、Windowsプラットフォームでしか使用できない.
  • プログラムは名前(「ローカル接続」)に対して何の処理もしていない.
  • プログラムはエラーを検査しなかった.
  • ショートカットまたはbatファイルを通じて、プログラムとプロファイルを組み合わせて、クリックを実現すれば切り替えることができます.
  • IPを変更するには管理者権限が必要です.ショートカットを定義し、「プロパティ」->「詳細」で「管理者として実行」を選択すると、ショートカットを実行するとパスワードの入力を求めるメッセージが表示されます.