【问题标题】:Linux Bash Scripting Proxy VariableLinux Bash 脚本代理变量
【发布时间】:2012-02-28 14:10:02
【问题描述】:

在linux中我们可以通过export http_proxy=http://x.x.x.x:x改变终端中http_proxy的变量。但我想用脚本来做。所以我有以下代码:

#!/bin/bash

FILE="_reliable_list.txt"

for line in $(cat $FILE)
do
    proxy="http://$line"
    export http_proxy=$proxy
done

最后在同一终端上,当我检查变量 http_proxy 的值时,它为空。 我想从文件代理地址中读取并将它们导出到 http_proxy 变量,然后与 wget 一起使用。只是我想自动化这段代码:

export http_proxy=http://x.x.x.x:x
wget mysite.com

如果有其他想法我会很高兴的。

【问题讨论】:

  • 为什么要循环设置代理?输入文件的最后一行是什么?
  • 因为我需要每个请求都有新的代理地址

标签: linux bash proxy


【解决方案1】:

您可以更改脚本以嵌入 wget 调用,假设新文件包含 url:

#!/bin/bash

URLS="_url_list.txt"
FILE="_reliable_list.txt"

i=1
for line in $(cat $FILE)
do
    export http_proxy="http://$line"
    wget $(head $i $URLS | tail -1 | tr -d '\n')
    let i++
done

【讨论】:

  • @user873286,它在这里工作,“URL”是否出现在您的错误消息中?你能尝试运行这个:“export http_proxy=217.196.113.81:8080; wget google.com”
  • 是的,对于单个变量它可以工作,但是当我从文件中读取时,它说端口错误,我认为这是因为最后一个字符回车或换行符,你知道如何剥离它们吗?跨度>
  • 在答案中添加了tr -d '\n'
  • wget $(head $i $URLS | tail -1 | tr -d '\n') 这行我根本不需要,所以我称之为 wget example.com | tr -d '\n' 这会是正确的
【解决方案2】:

首先,您想source 那个文件而不是运行它。当您使用export 时,它不会传播到调用shell。

其次,您的代码不是很好。您应该使用bash 的文件读取功能而不是cat。此外,您的代码只是选择该文件中的最后一行并将其用作代理,您确定这是您想要做的吗?如果是这样,您可以使用tail

【讨论】:

  • 没有我想做的,获取每一行并将其用作代理地址然后调用wget,然后继续此过程直到文件结束
  • @user873286:那你不能那样做,你必须把对wget -c的调用放在循环中。
  • 是的,我知道,但在我想检查它是否有效之前, wget -c 是否足够?
  • @user873286:wget -c 的唯一问题是,如果您在第一次调用 wget 时有一个同名文件,那么它将尝试“继续”它。跨度>
【解决方案3】:

我总是使用“读取时”而不是 cat FILE。

我不知道这是否会有所不同,或者是否有理由使用其中一个而不是另一个。

例子:

while read LINE
do

  export http_proxy="http://${LINE}"

done < $INPUT_FILE

【讨论】:

  • 有点切题的问题,但 +1 以获得好的建议。如果输入文件中有空格(换行符除外)会有所不同:for循环会受到分词的影响; read 不是。
  • 当这样写时(即使在这种情况下):export http_proxy:"http://$LINE"; wget $URL。我得到错误:: Bad port number.y URL 217.196.113.81:8080
  • 哎呀,对不起。您可能需要将变量括在引号中。我已经修改了上面的示例。实际上,perreal 在前面的示例中就是这样做的
【解决方案4】:

您可以简单地在命令行上执行此操作:

export http_proxy="$(tail -1 _reliable_list.txt)"

否则,如果您在脚本中有上述行,请说 script.sh 然后像这样运行:

. ./script.sh

在当前 shell 中获取导出的变量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-23
    • 1970-01-01
    • 1970-01-01
    • 2021-01-12
    • 2019-02-17
    • 2014-03-04
    • 2012-03-17
    • 1970-01-01
    相关资源
    最近更新 更多