0

Ubuntu 10.04 および Tcl 8.4 を使用して Linux マシンで作業しています。この PC のイーサネット リンクを設定できる Tcl スクリプトが必要です。これに必要なコードを共有できる機関はありますか?

4

1 に答える 1

0

イーサネット構成を処理する最も簡単な方法は、Tcl のコマンドを使用して、関連する Ubuntu ヘルプ ページexecにリストされているコマンドを呼び出すことです。これには、Tcl が文字列操作自体に非常に優れているという事実に対処するためのいくつかの適応があります。(bash スクリプトに慣れている場合は、Tclはまったく異なることに注意してください。特に、Tcl プロセスを置き換えるのではなく、サブプロセスが終了するのを待って標準出力を返します。) たとえば、次のように作成します。次のようなネットワーク インターフェイスを一覧表示するコマンド:exec

proc listNetworkInterfaces {} {
    foreach line [split [exec ifconfig -a] "\n"] {
        if {[regexp {^(\w+)} $line -> ifc]} {
            lappend result $ifc
        }
    }
    return $result
}

# Demonstrating use...
puts "my network interfaces are [join [lsort [listNetworkInterfaces]] ,]"

そして、次のようにリンクの IP アドレス、ネットマスク、およびゲートウェイを設定します (tclsh yourscript.tcl内部で実行すると仮定しますsudo。ネットワークを構成するには管理者権限が必要です)。

proc setNetworkAddress {interface address mask gateway} {
    exec ifconfig $interface $address netmask $mask
    exec route add default gw $gateway $interface
}

ネットワーク インターフェイスで設定できることはかなりたくさんありますが、コーディングを簡単にするための一般的な原則はexec、システム ツールを呼び出すことです。他のより複雑なソリューション (Tcl のスクリプト レイヤーを基になるシステム コールに直接接続する C インターフェイスを作成するなど) ほど高速ではありませんが、非常に簡単に使用できます。

于 2012-08-28T08:07:00.620 に答える