我系统上的许多脚本都依赖于lynx,而这反过来又不能通过我的代理。更具体地说,lynx成功地获取了除用户id和密码字段之外的全局代理设置,建议在命令行上使用-pauth:
lynx -pauth=proxyuserid:proxypass我很难这么做,因为林克斯是间接的。但是,我应该如何在全球范围内应用这些设置,用于所有lynx调用?一个配置文件--找不到任何关于代理授权的信息。lynx同名的bash包装器使用-pauth调用实际的lynx --不知怎么的,我无法使它工作。
<#>更新。我有完全描述代理的环境变量,例如Lynx正确读取代理服务器和端口的http_proxy=http://userid:pass@proxyserver:port,但由于某种原因没有正确读取用户/pass字段(例如,与wget不同)。
因此,我现在使用一个lynx包装脚本,如下所示:
envproxy=${http_proxy%@*}
/usr/bin/lynx -pauth=${envproxy:7} "$@"发布于 2019-02-20 12:17:55
如果脚本/程序在没有指定路径的情况下调用lynx /程序,则用包装器脚本替换lynx将有效,因此系统将在变量PATH中列出的目录中搜索它。
您必须找出lynx的位置,例如输入type lynx。我想可能是/usr/bin/lynx。
调用lynx的脚本/程序的变量D7必须在lynx (例如/usr/bin)的位置之前有一个不同的目录(例如/usr/local/bin)。如果不是这种情况,您可能必须扩展PATH。
示例:
假设您的PATH设置为
PATH=/usr/bin:/bin:/sbin:/usr/bin/X11你可以用
PATH="/usr/local/bin:$PATH"在一个为脚本/程序设置PATH的启动脚本中。如何才能做到这一点取决于如何调用这些脚本/程序。
然后,您可以创建这样一个shell脚本/usr/local/bin/lynx:
#! /bin/sh
# Here you could do what is needed to get the user name and password for the
# proxy authentication and use these instead of hard coded values.
/usr/bin/lynx -pauth=proxyuserid:proxypass "$@"当一个脚本/程序想要执行lynx foo bar时,它将在找到/usr/bin/lynx中的“真正的lynx”之前找到您的脚本/usr/local/bin/lynx。
然后,脚本将调用/usr/bin/lynx -pauth=proxyuserid:proxypass "foo" "bar"。
当然,您可以使用不同的位置而不是/usr/local/bin。
如果脚本/程序使用指定路径(如/usr/bin/lynx foo bar )来执行lynx,则此包装脚本解决方案将无法工作。在这种情况下,您可以将/usr/bin/lynx重命名为/usr/bin/lynx.real,并创建一个以相同方式调用/usr/bin/lynx.real的脚本/usr/bin/lynx。
https://unix.stackexchange.com/questions/501832
复制相似问题