您好,我正在使用 expect 来自动执行登录任务。但是,如果密码以连字符开头,脚本将失败我该如何转义
我在正确转义 '" 或其他字符时遇到了很多麻烦 有没有办法可以对所有字符进行编码并发送期望编码的字符串,以便在发送之前对其进行解码
这是我的脚本
#!/usr/bin/expect -f
spawn ssh -o "PubkeyAuthentication no" -l user 10.10.10.10
expect "password: "
send "-cpass\'ok\r"
expect "$ "
Run Code Online (Sandbox Code Playgroud)
从手册页:
-- 标志强制将下一个参数解释为字符串而不是标志。任何字符串都可以以“--”开头,无论它实际上是否看起来像一个标志。这提供了一种可靠的机制来指定变量字符串,而不会被那些意外看起来像标志的字符串绊倒。(所有以“-”开头的字符串都保留用于将来的选项。)
这意味着您应该编写send如下内容:
send -- "-cpass\'ok\r"
Run Code Online (Sandbox Code Playgroud)
注意:尝试传递以连字符开头的任何字符串时会遇到问题;这不起作用:send "-cpass",如果您的字符串有连字符,您需要使用--标志。
| 归档时间: |
|
| 查看次数: |
2369 次 |
| 最近记录: |