нужна помощь в создании оператора if, который будет работать для моей цели в .bashrc

Я отредактировал свой .bashrc, чтобы он выглядел так с некоторой помощью других на этом форуме ... Спасибо, ребята, за помощь в сегменте погоды этого сценария ... enter image description here

Проблема, с которой я столкнулся, - это код для внешнего IP-адреса. Если по какой-то причине сайт, который я использую для проверки внешнего IP-адреса, не отвечает ... он блокирует мой bash до тех пор, пока не получит информацию.

То, что я хотел бы сделать, это изменить его так, чтобы я мог иметь его, чтобы он не реагировал в течение секунды или 500 мс ... затем просто двигаться дальше, чтобы он не зависал. Надеюсь, это имеет смысл ... вот код, который я использую для этого.

localnet()
{
declare -a INETARRAY
INETARRAY=( `/sbin/ifconfig | awk /'inet addr/ {print $2}' && /sbin/ifconfig | awk /'Bcast/ {print $3}'`)
echo -ne ${INETARRAY[@]} "ExtIP:" ; myip
}
myip ()
{
lynx -dump -hiddenlinks=ignore -nolist http://checkip.dyndns.org:8245/ | grep "Current IP Address" | cut -d":" -f2 | cut -d" " -f2
}

В основном мне нужно выражение if, которое будет делать что-то вроде этого:

, если сайт не дает того, что ожидалось, с настраиваемым количеством времени, загружаемым «строка 1», еще загружаем «строка 2 «

Строка 1 будет содержать код без внешнего IP-запроса. Строка 2 будет содержать код с внешним IP-запросом.

Теперь .. Я на самом деле не уверен, что вызывает зависание .. Я не знаю, не отвечает ли сайт .. или если он занят и занимает больше времени, чтобы ответить или получает информацию но не то, что ожидалось ... это происходит спорадически, и если он зависает на мне, я могу закрыть оболочку и открыть ее, и обычно она будет получать информацию .. Я думал о пинге, но ... опять же ... не уверен, что сайт будет все равно отвечаю на пинг, но не выдаю то, что ищет скрипт и все равно зависает.

Я просто не знаю, как правильно настроить оператор, чтобы это произошло или что-то подобное

Спасибо заранее.

Я попробовал строку, предложенную Гленном Джекманом

curl --silent --output - --connect-timeout 2 --max-time 3 http://checkip.dyndns.org:8245/ | grep "Current IP Address" | cut -d":" -f2 | cut -d"" -f2

Он получил IP-адрес, но в результате я получил:

xxx.xxx.xxx.xxx</body></html>

Мне, вероятно, придется настроить вторая команда обрезки ... смеется ... думаю, мне нужно выучить обрезку: D

Если я использую

curl --silent --output - --connect-timeout 2 --max-time 3 http://checkip.dyndns.org:8245/ | grep "Current IP Address"

, я получаю вывод:

<html><head><title>Current IP Check</title></head><body>Current IP Address: xxx.xxx.xxx.xxx</body></html>

Если я переключаюсь обратно на строку lynx вместо curl и использую -read_timeout=1 -connect-timeout=1, это не дает оболочке зависать, если возникают проблемы с подключением, но ... она выдает ошибки, поэтому я надеялся сделать какое-то утверждение if

]
Network: addr:192.168.1.20 addr:127.0.0.1 Bcast:192.168.1.255 ExtIP:
Looking up checkip.dyndns.org:8245
Making HTTP connection to checkip.dyndns.org:8245
Alert!: Connection failed (too many retries).
Alert!: Unable to connect to remote host.

lynx: Can't access startfile http://checkip.dyndns.org:8245/
5
задан 7 May 2016 в 02:46

1 ответ

То, что, кажется, рабочее решение, использует вихревую команду, предложенную glenn jackman и адресом, предложенным Terrance. Я еще не столкнулся с подвешиванием, таким образом, я не знаю, будет ли оно через какие-либо ошибки, но это, кажется, работает хорошо.. новая строка теперь

curl --silent --output - --connect-timeout 1 --max-time 2 http://icanhazip.com/ 

, который, кажется, работает.. Я запустил времена терминала 10 без подвешивания или ошибки. Я думаю Вы, парни сделали это снова... Человек, которого я желаю, где что-то вроде этого было форумом для Windows... lol Вы, идет на их форумы и задает вопрос.. Вы получаете не связанный 'ответ образца письма' и затем ничто.

Вы парни являются великими.. Я думаю, что это теперь получило терминальную оболочку просто способ, которым я хочу ее и никакое зависание.. lol я отключил внешнюю вещь IP некоторое время из-за раздражения, но теперь у меня может быть он назад снова :D

, Если кто-либо решает использовать .bashrc, который я связал lol его немного незаконно заимствуемый, но я не помню исходного человека, я получил его от того, когда сценарий сначала начался, но я играл с ним с тех пор.. это было похоже в 2010 или что-то.

файл также включает ссылку на .bashrcc, который можно создать, где можно добавить команды и псевдонимы, не имея необходимость помещать их в основной файл. Это было сделано, потому что я синхронизирую свой bashrc через несколько компьютеров и существуют времена, где я хочу специальный псевдоним для одного компьютера, но я не делаю этого доступный на всем ПК, которые синхронизируются в файл. .bashrcc позволит мне добавлять его для одного пользователя только. Также помните, что необходимо будет измениться эти weather функция с почтовым индексом, или Вы будете просматривать временные файлы моей области :D

3
ответ дан 7 May 2016 в 12:46
  • 1
    Об этой проблеме уже сообщают и в противном случае где было бы лучшее место, чтобы сделать это? (Я использовал deb-пакет от парового веб-сайта), – verpfeilt 23 November 2017 в 10:31

Другие вопросы по тегам:

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