2015-06-02 2 views
1

Я работаю над скриптом bash, который проверяет +1000 доменов, если они истекли. Я использую цикл for для итерации по всем пользователям в /var/cpanel/users/*. Он отлично работает как 10 первых пользователей (циклы), затем он просто зависает.Почему мой скрипт bash висит?

Странно, что я могу остановить скрипт с Ctrl+Z, а затем снова запустить сценарий с fg, и он продолжает работать нормально примерно для пользователей +10, но потом снова зависает.

Это мой scirpt:

# File that will have the result. 
file="domain-result.txt" 

printf "USER\t\tDOMAIN\t\t\tREPORT\n" > "$file" 
printf "\n" >> "$file" 

# For loop to iterate over all users in cpanel. 
for z in /var/cpanel/users/*; 
do 
    # Only files can be used. 
    if [[ -f "$z" ]] 
    then 

    # Get the domain name. 
    awk -F'=' '/DNS=/ {print $2}' "$z" | while read row; 
    do 
      # If there's no domain name than skip to next account. 
      if [[ -z "$row" ]]; then continue; fi 

      printf "Checking domain: %s...done\n" "$row" 

      # Execute whois command on the domain. 
      whois=$(/usr/bin/whois $row | grep 'not found') 

      # Get the username. 
      user=$(echo "$z" | awk -F'/' '{print $5}') 

      if [[ -n "$whois" ]] 
      then 
        printf "%s\t\t%s\t\t%s - EXPIRED\n" "$user" "$row" "$whois" >> "$file" 
        break 
      else 
        continue 
      fi 
     done 

     else 
      continue 
     fi 
done 

printf "\n" 
printf "Total: $(sed '1,2d' "$file" | wc -l) expired domains.\n" 

Это пример того, как файлы в /var/cpanel/users/* выглядеть следующим образом:

DNS=stackoverflow.com 
+1

Вы должны добавить '#!/Bin/bash -x' и попытаться получить дополнительную информацию о том, где он точно застрял. –

+0

@BarisDemiray Я сделал 'set -x', но нет ничего полезного. Все выглядит просто отлично. – krt

+1

Я не удивлюсь, если вас позорят для злоупотребления WHOIS. –

ответ

0

Спасибо Ignacio Vazquez-Abrams за указание WHOIS злоупотреблений. Я получил его для работы, добавив sleep 2 к for loop. Теперь он отлично работает.

Смежные вопросы