Have you experienced despair?
接了一個服務器,md密碼複雜程度太高,配置expect一直撥錯,想到了轉義,但是轉起來好麻煩。
那些特殊字符需要轉義
帶有-解決方案
爲了減少重複手工輸入密碼的步驟,一般會使用expect來自動輸入,但是某些密碼中含有的特殊字符會導致send命令出現錯誤,
網上的教程一般是建議加上轉義符,但是遇到類似短橫線‘-’這種字符還是會報錯,最佳方法是用'send --'來輸入含有特殊字符的字符串。
比如,密碼是“-dafd@f12&-a”,so
send -- "-dafd@f12&-a"
其他特殊字符轉義
上一篇記錄了,iTerm2自動連接ssh的步驟,如果密碼簡單是可以成功的。但是比如我:
這個還是很絕望的,死活報錯。
轉義後
expect需要轉義的符號列表
- \ 需轉義爲 \\\
- } 需轉義爲 \}
- { 需轉義爲 \{
- [ 需轉義爲 \[
- ] 需轉義爲 \]
- + 需轉義爲 \+
- - 需轉義爲 \-
- * 需轉義爲 \*
- / 需轉義爲 \/
- = 需轉義爲 \=
- ^ 需轉義爲 \^
- ? 需轉義爲 \?
- $ 需轉義爲 \\\$
- % 需轉義爲 \\\%
- @ 需轉義爲 \\\@
- ` 需轉義爲 \`
- " 需轉義爲 \\\"
注意:以上都是在雙引號下面使用,如果沒有單引號,或者單引號,請直接使用\轉義
如有補充,歡迎 留言~
happy weekend~
感謝(如侵聯刪):
expect需要轉義的符號列表:https://blog.csdn.net/secondjanuary/article/details/21775953
perl的expect發送特殊字符問題:https://blog.csdn.net/laputa73/article/details/6077636