Перенос переменных среды с ожидаемым - PullRequest
2 голосов
/ 25 июня 2011

Я пишу ожидаемый сценарий, и мне нужно передать переменные окружения через сеанс telnet (который man-страница гордо называет функцией, но не предоставляет никаких других упоминаний).

Так что-то вроде этого:

#!/usr/bin/expect -c

spawn telnet 1.2.3.4
set rpath ""

expect "#" { set rpath $PATH }

где $ PATH находится в окружении удаленной системы .. какие идеи?

1 Ответ

0 голосов
/ 22 августа 2011

Вы можете легко сделать это, создав bash и затем запустить telnet для удаленной системы.

Полагаю, вы хотите установить переменную пути от локального компьютера к удаленному.

#!/bin/sh
# the next line restarts using tclsh \
exec expect "$0" "$@"

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.
...