2016-07-26 3 views
-1

Я хочу выполнить команду ниже в сценарии ожидания.Невозможно назначить вывод команды в сценарии ожидания

`netstat -nr | while read line;do flag=$(echo $line | cut -d' ' -f4); if [[ $flag == "UG" ]];then gateway=$(echo $line | cut -d' ' -f2);echo $gateway;fi;done` 

Цель сценария для входа на хост и получить межсетевые горячие товары, чтобы создать другую ф (eth0) с ifcong eth0: 0 <ip> и добавить IP-маршрут после with-- ip route add <ip> via <gateway ip>.

я попробовал следующие возможности: 1)

`expect -c ' 
    spawn bash -c "ssh [email protected]" 
    expect { 
    // password provided 
      } 
    expect "*?$*" 
    send "\$cmd" 
expect EOF 
    '` 

Для этого я получаю ошибку: отсутствует) при выполнении "установить CMD" NETSTAT -NR | while read line; do flag = $ (echo $ line | cut -d " не удалось прочитать файл" -f4); если [[$ флаг == "UG"]], а затем шлюз = $ (эхо $ линия | вырезать -d ": нет такого файла или каталога

2)

`expect -c 
    spawn bash -c "ssh [email protected]" 
    expect { 
    // password provided 
      } 
    expect "*?$*" 
    send "netstat -nr | while read line;do flag=\$(echo \$line | cut -d' ' -f4); if [[ \$flag == "UG" ]];then gateway=\$(echo \$line | cut -d' ' -f2);echo \$gateway;fi;done\r" 
expect EOF 
    '` 

Для этого я получаю ошибку как:. couldn't read file " -f4); if [[ $flag == "UG" ]];then gateway=$(echo $line | cut -d": no such file or directory

нет ли способ выполнить команды Баша внутри ожидать сценарий и зарегистрировать свою команду на переменный, так что он может быть использован в дальнейшем в ожидать сценарий

я опробовал способ set output $expect_out(buffer) но он вообще не регистрирует выход.

ответ

0
foreach {whole gw f} [regexp -all -inline {\S+\s+(\S+)\s+\S+\s+(\S+)} [exec netstat -nr]] { 
     if {$f eq "UG"} { 
       puts "Gateway : $gw" 
     } 
} 

Выход:

Gateway : 192.xx.xx.1 
+0

Добавление этого фрагмента кода делает сценарий запуска, но нет выхода. см ниже сценарий: 'ожидать -c ' Spawn Bash -c "пользователь SSH @ $ ENV (имя хоста)" сон 15 ожидать {// пароль, предоставленный} ожидать "? *] $ *" отправить" су \ г» ожидать "* ssword:? *" отправить "путь \ г" ожидать "*] # *" ​​ посыла "кд/Opt/\ г" ожидать "*] # *" ​​ отправить "pwd \ r" ожидать "*?] # *" ​​ foreach {whole gw f} [regexp -all -inline {\ S + \ s + (\ S +) \ s + \ S + \ s + (\ S +)} exec netstat -nr]] { if {$ f == "UG"} { ставит «шлюз: $ gw» } } ожидать "*?] # *" ​​ отправить "эхо \ $ дш \ г" ожидать EOF «' Это даст надлежащего O/P для 'pwd', а затем показывает' Эхо $ gw'. пустой вывод для 'gw' –

Смежные вопросы