Bash: попытка получить общедоступный IPv6 с помощью функцииLinux

Ответить Пред. темаСлед. тема
Anonymous
 Bash: попытка получить общедоступный IPv6 с помощью функции

Сообщение Anonymous »

Я пытаюсь проверить, есть ли что-нибудь в моем общедоступном IPv6, если нет, то выведите текст «Неизвестно» в переменную (для хранения). Затем укажите переменную, показанную позже в тексте, например: echo "Public IPv6: "$PIP6 (переменная, которую нужно сохранить).
Я знаю, что у меня нет общедоступный IPv6 (в моей стране он появляется медленно), поэтому я ожидаю, что будет указано «Неизвестно».
Но он пуст.
В чем проблема?< /p>
test.sh

Код: Выделить всё

#!/bin/bash
OS="$(uname)"
InternalIP=""
LIP="ip addr show"
LIP6="ip -6 addr show scope global"
IPv6=""
PIPv6=""

case $OS in
*)InternalIP=$($LIP | grep 'inet'| grep -v '127.0.0.1' | cut -d: -f2 | awk 'NF>0{print $2}');;
esac
case $OS in
*)IPv6=$($LIP | grep 'inet6' | grep -v '128' | awk '{print $2}');;
esac
case $OS in
*)PIPv6=$($LIP6 | grep 'inet6' | grep -v '128' | awk '{print $2}');;
esac
if [ -z $PIPv6 ]; then
echo $PIPv6
else
echo "Unknown"
fi

length=$InternalIP
echo $InternalIP | awk '{print substr($0, 1, length($0)-3)}'
echo $IPv6 | awk '{print substr($0, 1, length($0)-3)}'
echo "Public IPv6: "$PIPv6
Я пробовал разные стили if. попробовал использовать echo «Неизвестно» вместо результата, а затем он появился как «Неизвестно», но я хочу, чтобы он сохранялся в переменной, а не отображался в начале вывода:

Код: Выделить всё

Unknown
1xx.xxx.xxx.xxx
xxxx::xxxx:xxxx:xxxx:xxx
Public IPv6:
Теперь, когда я запускаю файл: publicip.sh

Код: Выделить всё

#!/bin/bash
LIB="ip address show" # Show Network Information
PIB6="ip -6 adress show scope global" # Public IPv6

IPv4="$($LIB | awk '/inet/ && !/127/ && !/128/ && !/64/{print $2}')"
IPv6="$($LIB | awk '/inet6/ && !/128/{print $2}')"
PIPv4="$(dig +short myip.opendns.com @resolver1.opendns.com)"
PIPv6="$($PIP6 | awk '/inet6/ && !/128/{print $2}')"

if [ -z "$PIPv6" ]; then
PIPv6="unknown"
fi

echo "Local IPv4: $IPv4" | awk '{print substr($0,1,length($0)-3)}'
echo "Local IPv6: $IPv6" | awk '{print substr($0,1,length($0)-3)}'
echo "Public IPv4: $PIPv4"
echo "Public IPv6: $PIPv6"
Выход:

Код: Выделить всё

Local IPv4: xxx.xxx.xxx.xxx
Local IPv6: xxxx::xxxx:xxxx:xxxx:xxx
Public IPv4: xxx.xxx.xxx.xxx
Public IPv6: Unknown
Так, как я этого хочу.


Подробнее здесь: https://stackoverflow.com/questions/782 ... a-function
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Linux»