aibangjuxin / groovy

study groovy
1 stars 0 forks source link

Curl http #2

Open aibangjuxin opened 11 months ago

aibangjuxin commented 11 months ago

好的,你可以使用 shell 脚本中的 curl 命令来实现这个功能。以下是一个示例脚本:

#!/bin/bash

# 目标 URL
url="https://www.example.com"

# 代理列表
proxies=("abc.com:3128" "def.com:8080" "ghi.com:8888")

# 超时时间
timeout=10

for proxy in "${proxies[@]}"
do
    # 使用 curl 命令访问目标 URL,使用代理和超时时间选项
    response=$(curl -x "$proxy" -m "$timeout" -s -o /dev/null -w "%{http_code}" "$url")

    # 打印代理的反馈结果
    echo "Proxy $proxy returned status code: $response"
done

在这个脚本中,我们首先定义了目标 URL 和代理列表。然后使用 for 循环遍历代理列表,对于每一个代理,使用 curl 命令访问目标 URL。curl 命令使用 -x 选项来指定代理,使用 -m 选项来指定超时时间,使用 -s 选项来禁止输出任何进度信息,使用 -o 选项将输出重定向到 /dev/null,最后使用 -w 选项来指定输出格式,这里我们只输出 HTTP 状态码。然后将代理的反馈结果打印出来。

请注意,这个脚本中使用的超时时间是整个请求的超时时间,包括 DNS 解析、连接建立、请求和响应等。如果你想要单独设置连接超时时间或响应超时时间,可以使用 - connect-timeout 和 - timeout 选项。

aibangjuxin commented 11 months ago

你可以使用 shell 中的正则表达式来过滤文件中的域名和端口信息。以下是一个示例脚本:

#!/bin/bash

# 要过滤的文件
filename="example.txt"

# 正则表达式,匹配域名和端口
regex="([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.[a-zA-Z]{2,}:[0-9]+"

# 使用 grep 命令过滤文件
grep -Eo "$regex" "$filename"

在这个脚本中,我们首先定义了要过滤的文件名和匹配域名和端口的正则表达式。然后使用 grep 命令进行过滤,使用 -E 选项启用正则表达式匹配,使用 -o 选项只输出匹配的部分,最后指定要过滤的文件名。

如果你想要将过滤结果输出到一个新文件中,可以使用输出重定向符号 " > ",例如:

grep -Eo "$regex" "$filename" > filtered.txt

这样会将过滤结果输出到一个名为 "filtered.txt" 的新文件中。

aibangjuxin commented 11 months ago

是的,您可以使用 -sort-by 标志按时间对 kubectl get events 命令的输出进行排序。以下是一个示例命令,按时间降序排列事件:

kubectl get events --sort-by='.metadata.creationTimestamp' -n <namespace>

请将 <namespace> 替换为您要检查的命名空间。该命令将显示该命名空间中所有事件,并按时间降序排列。如果您希望按升序排序,请在标志值前添加 -,如下所示:

kubectl get events --sort-by='-.metadata.creationTimestamp' -n <namespace>

请注意,该命令将显示所有事件,包括过去和现在的事件。如果您只想查看最近的事件,请使用 -n 标志限制命名空间,并使用 -l 标志筛选特定的标签。例如,以下命令将显示最近 10 分钟内带有标签 app=myapp 的事件:

kubectl get events --sort-by='.metadata.creationTimestamp' -n <namespace> -l app=myapp --since=10m

请将 <namespace> 替换为您要检查的命名空间。

aibangjuxin commented 10 months ago

您可以使用grep和正则表达式来提取文本中的URL,特别是以"https://"开头的部分。以下是一个示例命令

grep -o 'https://[^[:space:]]*' your_file.txt

这个命令将从名为your_file.txt的文件中提取所有以"https://"开头的URL,并输出它们的内容

这个命令会将匹配的URL打印到屏幕上,以供查看或进一步处理。

aibangjuxin commented 10 months ago

你可以使用Shell脚本来实现这个功能。下面是一个简单的示例:

#!/bin/bash

# 读取文件
while IFS= read -r url
do
    # 使用curl发送请求并获取状态码
    status_code=$(curl -o /dev/null --silent --head --write-out '%{http_code}\n' "$url")

    # 输出状态码
    echo "URL: $url, Status Code: $status_code"
done < "a.txt"

将上述代码保存为一个名为script.sh的文件,并将你的a.txt文件与该脚本放在同一目录下。然后在终端中运行以下命令:

chmod +x script.sh
./script.sh

脚本将逐行读取a.txt文件中的URL,使用curl发送请求,并返回每个URL的状态码。状态码将被打印到终端上。

aibangjuxin commented 10 months ago

你可以使用Shell脚本来循环读取a.txt文件中的每个URL,并使用curl来获取每个URL的状态码。以下是一个示例Shell脚本,以Markdown格式提供:

```shell
#!/bin/bash

# 从a.txt文件中逐行读取URL并执行curl
while IFS= read -r url
do
    # 使用curl获取URL的状态码
    status_code=$(curl -o /dev/null -s -w "%{http_code}" "$url")

    # 输出URL和对应的状态码
    echo "URL: $url - Status Code: $status_code"
done < a.txt


你可以将上述代码保存到一个文件(例如`check_urls.sh`),然后使用`chmod +x check_urls.sh`命令使其可执行。接下来,在终端中运行`./check_urls.sh`即可开始循环检查每个URL的状态码。脚本会输出每个URL和其对应的状态码。
aibangjuxin commented 10 months ago

要从每行URL中提取URL的主机部分(例如,从https://abc/def中提取https://abc),你可以使用工具如awksed。以下是使用awk的示例:

```shell
awk -F/ '{print $1"//"$3}' url.txt


这个命令会按照斜杠(`/`)分隔每行的字段,并打印第一个字段和第三个字段,以生成主机部分。

如果你有一个名为`url.txt`的文件,其中包含每行一个URL,你可以运行上述命令,它将输出每个URL的主机部分。例如,`https://abc/def`将被转换成`https://abc`。

请注意,这只是提取主机部分的一种方法,如果你的URL具有不同的格式或需要处理其他情况,可能需要进行适当的调整。
aibangjuxin commented 10 months ago

如果你想追加多行文本到文件中,你可以使用Here文档的方式。以下是一个示例:

```shell
cat <<EOF >> 文件名.txt
这是第一行内容
这是第二行内容
这是第三行内容
EOF


在上述示例中,使用`cat <<EOF >> 文件名.txt`命令,然后在`EOF`之前添加你要追加的多行文本内容。这将把多行文本追加到名为`文件名.txt`的文件中。你可以根据需要添加或修改多行文本内容。