2011-06-24 5 views
2

私はexpectスクリプトを書いており、telnetセッション(誇らしげには、マニュアルページは特筆すべきは他の言及はありません)を介して環境変数を転送する必要があります。期待通りの転送環境変数

したがって、このような何か:$ PATHには、リモートsystem..anyのアイデアの環境にある

#!/usr/bin/expect -c 

spawn telnet 1.2.3.4 
set rpath "" 

expect "#" { set rpath $PATH } 

+0

転送する方向はどちらですか? – wallyk

+0

リモートシステムからローカルシステムへ。 – user318904

+0

同様の質問がここで尋ねられました:http://stackoverflow.com/questions/7043690/run-cat-on-remote-computer-and-send-output-a-variable-using-expect/7074898#7074898 –

答えて

0

bashを起動してリモートシステムにtelnetを発行すると、簡単にこれを行うことができます。

パス変数をローカルマシンからリモートマシンに設定するとします。

#!/bin/sh 
# the next line restarts using tclsh \ 
exec expect "$0" "[email protected]" 

set prompt "~$" 
set hostname "anyhost" 

spawn bash 
send "echo $PATH\r" 
expect { 
    $prompt { 
     set pathVariable $expect_out(buffer) 
    } 
    timeout { 
     send_user "path hasn't been set - exiting\n" 
     close 
     exit 1 
    } 

} 

send "telnet $hostname\r" 
expect { 
     "Login:" {} 
     "telnet: " { 
      send_error "$argv0 couldn't login to $hostname\n" 
      exit 1; 
     } 
     timeout { 
      send_error "$argv0 couldn't login to $hostname, timeout of $timeout passed\n" 
      exit 1; 
     } 
    }  
send "$username\r" 
expect "Password:" 
send "$password\r" 

expect $remotePrompt 
send "bash\r" 
send "export PATH=$pathVariable\r" 

# continue with whatever you want.