Wget не получает куки, не тянет назад результаты проверки.

661
Ben Coughlan

У меня возникла пара проблем при переносе скриптов проверки между парой серверов.

Сценарий.

#!/bin/bash  hostname=$1 port=$2 retstatus=0 retStr= st=`date "+%s.%N"`  if [ $# -ne 2 ]; then echo "Error, invalid parameters passed" exit 3 fi  tmp_cook=`mktemp` wget --no-check-certificate --keep-session-cookies --save-cookies $tmp_cook https://$hostname:$port/LoginForm.jsp -O /dev/null -o /dev/null  ta=`date "+%s.%N"` wget --no-check-certificate --load-cookies $tmp_cook --keep-session-cookies --save-cookies $tmp_cook --post-data="j_username=scott&j_password=tiger" https://$hostname:$port/j_security_check -O /dev/null -o /dev/null  tb=`date "+%s.%N"` ok2=`wget --no-check-certificate --load-cookies $tmp_cook --keep-session-cookies --save-cookies $tmp_cook https://$hostname:$port/MainMenu.jsp -o /dev/null -O - | grep 'Customer Care' | wc -l` if [ $ok2 -gt 0 ]; then retStr="SITE OK." else retStatus=2 retStr="SITE NOT OK." fi  #echo 'Got session:' rm -f $tmp_cook et=`date "+%s.%N"` da=`echo "$ta - $st" | bc` db=`echo "$tb - $st" | bc` dz=`echo "$et - $st" | bc`   printf "%s|SITE LOGIN:%02.2f,%02.2f,%02.2f\n" "$retStr" $da $db $dz exit $retStatus 

когда я запускаю его в режиме отладки:

[nagios@mr-slave libexec]$ bash -x check_Login.sh node001.company.com 16004 + hostname=node001.company.com + port=16004 + retstatus=0 + retStr= ++ date +%s.%N + st=1427736385.648488303 + '[' 2 -ne 2 ']' ++ mktemp + tmp_cook=/tmp/tmp.ye9MyQfgJp + wget --no-check-certificate --keep-session-cookies --save-cookies /tmp/tmp.ye9MyQfgJp https://node001.company.com:16004/LoginForm.jsp -O /dev/null -o /dev/null ++ date +%s.%N + ta=1427736385.676642983 + wget --no-check-certificate --load-cookies /tmp/tmp.ye9MyQfgJp --keep-session-cookies --save-cookies /tmp/tmp.ye9MyQfgJp '--post-data=j_username=scott&j_password=tiger' https://node001.company.com:16004/j_security_check -O /dev/null -o /dev/null ++ date +%s.%N + tb=1427736385.702942948 ++ wget --no-check-certificate --load-cookies /tmp/tmp.ye9MyQfgJp --keep-session-cookies --save-cookies /tmp/tmp.ye9MyQfgJp https://node001.company.com:16004/MainMenu.jsp -o /dev/null -O - ++ grep 'menu 1' ++ wc -l + ok2=0 + '[' 0 -gt 0 ']' + retStatus=2 + retStr='SITE NOT OK.' ++ date +%s.%N + et=1427736385.729800960 ++ echo '1427736385.676642983 - 1427736385.648488303' ++ bc + da=.028154680 ++ bc ++ echo '1427736385.702942948 - 1427736385.648488303' + db=.054454645 ++ echo '1427736385.729800960 - 1427736385.648488303' ++ bc + dz=.081312657 + printf '%s|SITE LOGIN:%02.2f,%02.2f,%02.2f\n' 'SITE NOT OK.' .028154680 .054454645 .081312657 SITE NOT OK.|SITE LOGIN:0.03,0.05,0.08 + exit 2 

Тогда я проверил содержимое cookie в файле tmp.

[nagios@dub-company-slave libexec]$ cat /tmp/tmp.ye9MyQfgJp # HTTP cookie file. # Generated by Wget on 2015-03-30 18:26:25. # Edit at your own risk. 

Никакой информации здесь, я бы ожидал чего-то более похожего на следующее:

nagios@dub-company-slave [libexec] -->> cat /tmp/tmp.wdOvUJ9695 # HTTP cookie file. # Generated by Wget on 2015-03-30 18:19:11. # Edit at your own risk.  node001.company.com:16004 FALSE / FALSE 0 JSESSIONID RMw8VZFPvnnDFcmLzThjgp2mMDJ1GLgt4w8XJpRn1BWn2QNQrQjP!250469950 node001.company.com:16004 FALSE / TRUE 0 _wl_authcookie_ 6QxOZhTJCc9JyyL2lrZZ 

Этот скрипт работает от другого ведомого устройства, и единственное видимое отличие, которое я вижу, это две незначительно отличающиеся версии wget.

GNU Wget 1.11.4 Модифицированная Red Hat, которая работает / GNU Wget 1.12, построенная на Linux-GNU, которая не работает.

0

1 ответ на вопрос

0
Ben Coughlan

В новой версии Wget тип шифрования по умолчанию был SSL3, а не TLS1.0, который используется сайтом.

--secure-protocol = TLSv1 заставил все работать просто отлично :)

Похожие вопросы