前不久,寫了個很簡單的exp登入指令碼。 今天想通過rz上傳個檔案,卻怎麼也傳不上去。 並不報錯,命令執行後除了檔案未上傳,其它與上傳成功時一樣。
做為一個前端開發,寫段shell真是一步一個坑。
原因及解決方式
鼓搗良久後發現,原來是字符集問題。
用.sh
將.exp
包裹,並在.sh
檔案中指定LC_CTYPE=en_US
解決。
簡單的程式碼示例:
- test.sh
#!/bin/sh
export LC_CTYPE=en_US
/Users/test/test.exp
複製程式碼
- test.exp
#!/usr/bin/expect -f
set ip *.*.*.*
set password **********
set timeout 10
spawn ssh root@$ip
expect {
"*yes/no" { send "yes
"; exp_continue}
"*password:" { send "$password
" }
}
expect "#*"
send "cd ..
"
interact
複製程式碼
另: 通過該設定也解決了通過vim檢視檔案時的亂碼問題。