expect腳本中,變量的寫法


 

一、expect相關命令

命令 作用
send 用於向進程發送字符串
expect 從進程接收字符串
spawn 啟動新的進程
interact 允許用戶交互

二、expect簡單樣例

#!/usr/tcl/bin/expect

set timeout 20
set host "10.10.10.100"
set username "root"
set password "123456"

spawn ssh $username@$host
expect "*password*" {send "$password\r"}
interact #執行完后保持交互狀態,把控制權交給控制台,就可以手工操作了。

三、shell腳本和expect腳本的結合樣例

shell腳本中定義時間變量的寫法:
time=`date "+%Y%m%d"`

==》》
直接照搬到expect中,設置的變量是不生效的:
set time `date "+%Y%m%d"`
這樣的寫法是錯誤的,無法識別。

==》》
應該這樣寫:
set time [exec date +%Y%m%d]
才是正確的寫法。

將expect加入到shell腳本后 set 定義的變量會失效;
解決辦法 :將變量提到expect之外定義

#!/bin/bash
time=`date "+%Y%m%d"`
expect << EOF
cd /xxx
spawn scp user@ipaddr:/ /
set timeout 300
expect "assword:"
send "passwd\r"
expect "sftp>"
send "cd dir\r"
expect "sftp>"
send "get *admin*.$time*\r"
sleep 5
expect "sftp>"
sleep 5
#set timeout 300
EOF

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM