0

我正在使用 Ubuntu 10.04 和 Tcl 8.4 在我的 linux 机器上工作。我想要一个可以为这台 PC 配置以太网链接的 Tcl 脚本。任何机构都可以为此分享所需的代码吗?

4

1 回答 1

0

处理以太网配置的最简单方法是使用 Tcl 的exec命令来调用相关 Ubuntu 帮助页面中列出的命令,并进行一些调整以处理 Tcl 本身非常擅长字符串操作的事实。(如果您习惯 bash 脚本,请注意 Tclexec完全不同。特别是,它不会替换 Tcl 进程;而是等待子进程完成并返回其标准输出。)例如,您可以创建列出网络接口的命令,如下所示:

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 回答