목록의 각 도메인에 대해 Whois 조회를 수행하는 스크립트가 있는데 생성 날짜와 만료 날짜를 추출해야 합니다. 첫 번째 부분이 있지만 만료 날짜도 알 수 없는 것 같습니다. whois
도메인을 두 번 운영 하고 싶지 않습니다 .
while IFS="," read domain rdate; do # Domain name and received date
cdate=( $(whois $domain | grep -m 1 -i Creation| awk -F" " '{print $3}') )
# Harvest creation date from whois record for each domain
# expdate=??????
printf "$domain,$cdate,$expdate \n"
done < "temp1.txt" 2> /dev/null # Sets the file to read in from and suppress error messages
나는 성공하지 못한 채 아래와 같이 whois를 "whod"로 설정하려고 시도했습니다.
whod=$(whois $domain|awk '{print $0}')
expdate=( $(echo $whod |grep -m 1 -i 'Expiration Date' | awk -F" " '{print $3}') )
echo $expdate
답변1
우선, 이것은 아무런 의미가 없습니다 awk '{print $0}'
. 단지 각 입력 라인을 인쇄합니다. 대신 사용하십시오 whod=$(whois "$domain")
. 어쨌든, 가장 큰 문제는 변수를 인용하지 않는다는 것입니다. 이로 인해 모든 종류의 문제가 발생하며, echo $whod
그 중 가장 중요한 것은 따라서 귀하의 신청서는 awk '{print $3}'
다음 줄에 적용됩니다(명확성을 위해 축약됨).
Whois Server Version 2.0 Domain names in the .com and .net [ ... ]
세 번째 단어 Version
는 아마도 당신이 얻을 것입니다. 당신은 또한 array( expdate=( $( echo $whod ... ) )
)를 사용하는데, 왜 그런지 모르겠습니다. 여러 개의 일치 항목이 있을 수 있나요? 어쨌든 스크립트의 작업 버전은 다음과 같습니다.
while IFS="," read domain rdate; do
whod="$(whois "$domain")"
cdate="$(echo "$whod" | grep -m 1 -i Creation| awk -F" " '{print $3}')"
expdate="$(echo "$whod" |grep -m 1 -i 'Expiration Date' | awk -F" " '{print $3}')"
printf "$domain,$cdate,$expdate \n"
done < "temp1.txt"