如何使用tcl代码配置pc的以太网链接

时间:2012-08-28 07:09:57

标签: tcl

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

1 个答案:

答案 0 :(得分:0)

处理以太网配置的最简单方法是使用Tcl的exec命令来调用relevant Ubuntu help pages中列出的命令,并进行一些调整以处理Tcl非常擅长字符串操作的事实。 (如果您习惯于编写脚本,请注意Tcl的exec是完全不同的。特别是,它不会替换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接口),但它很容易实现。