我有一个像这样的期待文件
#!/opt/tools/unsupported/expect-5.39/bin/expect
spawn ssh -l user ip
expect_after eof {exit 0}
set timeout 10
log_file /report.txt
expect "Password:" { send "pasword\r" }
expect "$ " { send "date\r" }
expect "$ " { send "readlink /somelink\r" }
set CCM_BUILD $expect_out(buffer)
send_log "CCM: $CCM_BUILD"
expect "$ " { send "date\r" }
expect "$ " { send "exit\r" }
readlink的结果将是一个像447这样的数字。这就是我想要的日志文件。但我得到的是:
Password:
Last login: Tue Feb 28 09:49:42 2017 from gbplr6gn01.genband.com^M
^[[?1034h-bash-4.1$ date
Tue Feb 28 09:50:42 CST 2017
-bash-4.1$ CCM: readlink/localdisk2/jenkins/jobs/CCM/jobs/Deploy_CCM_build/builds/lastSuccessfulBuild
447
-bash-4.1$ date
Tue Feb 28 09:50:42 CST 2017
-bash-4.1$
我怎样才能得到CCM:447?
答案 0 :(得分:0)
更新,这有效:
#!/opt/tools/unsupported/expect-5.39/bin/expect
set timeout 10
match_max 256
expect_after eof {exit 0}
log_file -noappend report.txt
puts -nonewline "Fetching link from ip..."
spawn -noecho ssh -l user ip
log_user 0
expect "Password:" { send "pasword\r" }
expect "$ " { send "date\r" }
expect "$ " { send "readlink somelink\r" }
expect -r "readlink .*\r\n(.*)\r\n" {
set CCM_BUILD $expect_out(1,string)
}
send_log "CCM: $CCM_BUILD"
puts ""
expect "$ " { send "date\r" }
expect "$ " { send "exit\r" }