在使用curl的链接外部服务器时,会遇到密码或者用户名中存在有特殊字符,导致bash在处理过程中报错。这种报错一般无法通过改写来规避。
我在操作过程中遇到的问题就是一个用户的密码中即存在一对单引号‘’同时还存在一个单独的双引号”。在调用curl的脚本中只要使用这个密码就会报错。
为了规避这个问题,查阅curl的使用说明,看到可以将用户名和密码写到curl的配置文件中(.netrc),使用脚本直接调用配置文件。这样bash就不会读到这种特殊字符的密码。
- 配置文件使用方法如下
- 在root目录下创建一个.netrc文件
- 编辑.netrc文件内容,以访问host.domain.con 使用用户名:myself 密码:select为例。编辑文件内容为:“machine host.domain.com login myself password secret”保存并推出
- 在脚本中使用“curl -n host.domain.com”命令即可实现curl调用配置文件中用户名和密码访问服务器
如果需要使用cookie的话,这种方式cookie好像无法读取到密码,还是直接使用转义符把密码中的特殊字符转义吧