0

eth1のIPアドレスを取得し、それをゲートウェイとして使用するために、プロシージャ内で次のコードを使用しています。もう1つ必要なのは、この変数(IPアドレス)をユーザースコープの外部で使用することです。

global my_gw_ip_address
expect "# "
send "ifconfig eth1 | grep 'inet addr:' | cut -d: -f2 | awk '{print \$1}' > prod_ip_base.txt\r"
expect "# "
send " my_internal_gw=`cat prod_ip_base.txt`\r"
expect "# "
send " echo \$my_internal_gw\r"
expect "root@cnode-pp81:~ "
set checking_buffer_out $expect_out(buffer)
regexp {(?:\d+\.){3}\d+} $checking_buffer_out my_gw_ip_address
puts "internal gw: $my_gw_ip_address\n"

関数の出力は次のとおり
です。1。行send " echo \$my_internal_gw\r"は正しいIPアドレス192.168.138.50を返します
。2。行puts "internal gw: $my_gw_ip_address\n"は内部gw:0を返します。

誰か私が間違っていることを教えてもらえますか?変数$my_gw_ip_addressが0であるのはなぜですか?

4

1 に答える 1

0

問題を解決します。次のコマンドの間に sleep 1 を追加する必要がありました。

変化する

set checking_buffer_out $expect_out(buffer)
regexp {(?:\d+\.){3}\d+} $checking_buffer_out my_gw_ip_address

することが:

set checking_buffer_out $expect_out(buffer)
sleep 1 
regexp {(?:\d+\.){3}\d+} $checking_buffer_out my_gw_ip_address

アミガル

于 2012-10-02T10:56:54.580 に答える