Я плохо знаком со сценариями, и я застреваю. Я должен преобразовать это:
MYIP=`ifconfig eth0 | grep 'inet addr'| awk '{print $2}' | cut -d ':' -f 2`;
В это:
MYIP=curl -s checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//'
Я "делаю" сценарий, который пошлет мне электронное письмо каждый раз, когда мои внешние изменения IP. Я соединяю его от остатков, которые я нахожу в сети, но я не могу заставить это работать. Первый код просто отправляет мне уведомление с моим внутренним IP.
Вторая часть кода для определения моего глобального IP, но это, кажется, не работает. Я получаю сообщение об ошибке:
./filename.sh: line 5: -s: command not found
(строка 5 является второй частью сценария, отправленного выше),
Помогите мне решить последнюю часть в загадке..Спасибо.
Вам нужен Bash замена команды в обеих строках.
MYIP=$(ifconfig eth0 | grep 'inet addr'| awk '{print $2}' | cut -d ':' -f 2)
MYIP=$(curl -s checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//')
Вы уже использовали ` ... `
синтаксис замены команды в Вашей первой строке, но $( ... )
синтаксис обычно рекомендуется по тому.
можно продолжать читать о двух синтаксисах Bash замены команды там:
http://wiki.bash-hackers.org/syntax/expansion/cmdsubst
В дополнение к тому, что уже заявил ByteCommander, Вам не нужна такая передача по каналу. Просто позвольте curl
, дают вывод awk
, и он может обработать задание. Вы могли или использовать один канал или bash
замена процесса. Я использовал последний один
awk -F ':' '{print "Current IP:"substr($2,0,14)}' < <(curl -s checkip.dyndns.org)
Другой простой способ получить Ваш текущий глобальный IP, не имея необходимость снимать любые дополнительные символы с awk
или sed
или что-либо с dig
:
dig +short myip.opendns.com @resolver1.opendns.com
, Который возвратит только Ваш IP.