予想されるスクリプトバッファ出力が表示されない

予想されるスクリプトバッファ出力が表示されない

バッファからコマンド出力を取得するには?現在は「(バッファ)とのみ表示されます。

私のスクリプトとデバッグ出力は次のとおりです。

#!/bin/bash -x
while read p; do
echo $p
{
    /usr/bin/expect -d << EOF
    match_max 10000
    spawn ssh anthony@$p
    expect "password:"
    send "MyPasswordHere\r"
    expect " "
    send "ifconfig |grep -i eth0\r"
    expect " "
    puts "The output is $expect_out(buffer) "
    send "exit\r"
EOF
}
done <List.txt


+ read p
+ echo localhost
localhost
+ /usr/bin/expect -d
expect version 5.45
argv[0] = /usr/bin/expect  argv[1] = -d  
set argc 0
set argv0 "/usr/bin/expect"
set argv ""
executing commands from command file
spawn ssh anthony@localhost
parent: waiting for sync byte
parent: telling child to go ahead
parent: now unsynchronized from child
spawn: returns {2032}

expect: does "" (spawn_id exp15) match glob pattern "password:"? no
anthony@localhost's password: 
expect: does "anthony@localhost's password: " (spawn_id exp15) match glob pattern "password:"? yes
expect: set expect_out(0,string) "password:"
expect: set expect_out(spawn_id) "exp15"
expect: set expect_out(buffer) "anthony@localhost's password:"
send: sending "M00nsh0t@\r" to { exp15 }

expect: does " " (spawn_id exp15) match glob pattern " "? yes
expect: set expect_out(0,string) " "
expect: set expect_out(spawn_id) "exp15"
expect: set expect_out(buffer) " "
send: sending "ifconfig |grep -i eth0\r" to { exp15 }

expect: does "" (spawn_id exp15) match glob pattern " "? no


expect: does "\r\n" (spawn_id exp15) match glob pattern " "? no
Welcome to Ubuntu 14.04.1 LTS (GNU/Linux 3.13.0-40-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

Last login: Sun Dec 21 09:23:38 2014 from localhost

expect: does "\r\nWelcome to Ubuntu 14.04.1 LTS (GNU/Linux 3.13.0-40-generic x86_64)\r\n\r\n * Documentation:  https://help.ubuntu.com/\r\n\r\nLast login: Sun Dec 21 09:23:38 2014 from localhost\r\r\n" (spawn_id exp15) match glob pattern " "? yes
expect: set expect_out(0,string) " "
expect: set expect_out(spawn_id) "exp15"
expect: set expect_out(buffer) "\r\nWelcome "
The output is (buffer) 
send: sending "exit\r" to { exp15 }
+ read p

ベストアンサー1

予測スクリプトは引用符なしの区切り文字であるため、予測変数はシェル変数として扱われます。変化

puts "The output is $expect_out(buffer) "

到着

puts "The output is \$expect_out(buffer) "

表示される出力(The output is (buffer))はまさに私が期待したものと同じです。$expect_outスクリプトを期待どおりに渡す前に、シェルは何も拡張されませんでした。

おすすめ記事