求教expect达人,如何将远程主机执行命令的结果赋值给变量

解决方案 »

  1.   

    这些结果都是死的,需要你自己去抓取。比如ssh登陆  
    expect {
      ”抓取的关键字“       set  xxxxx
    }
      

  2.   

    expect -c "
    spawn ssh [email protected]
    expect \"yes/no\" { send \"yes\r\" exp_continue } \"password\" { send \"mypass\r\" }
    expect \"\[root\" { send \"uuidgen; ls /; echo RET=\$?\r\"}
    expect -re \"\[0-9a-z\]{8}-\[0-9a-z\]{4}-\[0-9a-z\]{4}-\[0-9a-z\]{4}-\[0-9a-z\]{12}.*RET=\[0-9\]+\" { set myvar \"\$expect_out(0,string)\" }
    exec echo \$myvar | grep -vE \"\[0-9a-z\]{8}-\[0-9a-z\]{4}-\[0-9a-z\]{4}-\[0-9a-z\]{4}-\[0-9a-z\]{12}\" > /dev/shm/myvar
    expect eof
    "; myvar="$(cat /dev/shm/myvar)"; rm -f /dev/shm/myvarecho "$myvar"