我的whois bash脚本适用于一些域,但不适用于其他域。
当我在同一个域的终端中直接运行该命令时,我能够看到输出。此外,有时脚本不能正常运行并卡住,然后我需要中断它。
为什么会这样,我该如何修复它呢?
假设domain.txt文件包含: gmail.com、zoom.us、facebook.com、bank.com等。
脚本是:
#!/bin/bash
echo "Please enter the full path of txt file"
read path
filename=$path
while read line
do
echo "Checking domain $line"
a=$(whois $line | grep -i -e "Creation Date" | head -1)
b=$(whois $line | grep -i -e "no match" | head -1)
echo "$a"$line >> /root/outputdomain.csv
done <$filename
echo "file has been processed successfully."示例输入txt文件为:
linkedin.com
zoom.us
sbi.co.in
facebook.com
sap.com
hsbc.com预期输出为:
Creation Date: 2002-11-02T15:38:11Z linkedin.com
Creation Date: 2002-04-24T15:03:39Z zoom.us目前对我有用的是:
Creation Date: 2002-11-02T15:38:11Z linkedin.com
Creation Date: 1997-03-29T05:00:00Z facebook.com但是zoom.us,sbi.co.in没有输出。
如果我运行下面的命令,我可以获取所需的数据:
$ whois zoom.us | grep -E "Creation Date" | head -1
Creation Date: 2002-04-24T15:03:39Z发布于 2020-03-17 21:39:49
我不使用/知道whois,但根据你的帖子,这就是我想出来的。
#!/usr/bin/env bash
shopt -s extglob
echo "Please enter the full path of txt file"
read -r path
filename=$path
while read -r line; do
printf 'Processing %s\n' "$line"...
if a=$(whois "$line" | grep --line-buffer -Fi -m1 "creation date"); then
printf '%s %s\n' "${a##*+([[:blank:]])}" "$line" >> outputdomain.csv
else
printf '%s No domain match\n' "$line" >> outputdomain.csv
fi
sleep 5
done < "$filename"-m可能不是POSIX,但它在GNU和BSD grep中。https://stackoverflow.com/questions/60721776
复制相似问题