Как выполнить запись в консоль во время завершения работы?

Вы должны использоватьip(вместо ifconfig), так как он актуален, поддерживается и, возможно, наиболее важно для целей написания сценариев, он дает согласованный и разборчивый вывод. Ниже приведены несколько подобных подходов :

.

Если вам нужен адрес IPv4 для вашего интерфейса Etherneteth0:

$ ip -4 -o addr show eth0 | awk '{print $4}'
192.168.1.166/24  

Как сценарий:

$ INTFC=eth0  
$ MYIPV4=$(ip -4 -o addr show $INTFC | awk '{print $4}') 
$ echo $MYIPV4
192.168.1.166/24

Результат, полученный выше, представлен в нотации CIDR. Если нотация CIDR не нужна, ее можно удалить:

$ ip -4 -o addr show eth0 | awk '{print $4}' | cut -d "/" -f 1 
192.168.1.166  

Другой вариант, который ИМХО является «наиболее элегантным», — получение адреса IPv4 для любого интерфейса, используемого для подключения к указанному удаленному хосту (8.8.8.8 в данном случае ). Предоставлено @gatoatigrado в этот ответ:

$ ip route get 8.8.8.8 | awk '{ print $NF; exit }'
192.168.1.166

Как сценарий:

$ RHOST=8.8.8.8  
$ MYIP=$(ip route get $RHOST | awk '{ print $NF; exit }')
$ echo $MYIP
192.168.1.166

Это прекрасно работает на хосте с одним интерфейсом, но более предпочтительно будет также работать на хостах с несколькими интерфейсами и/или спецификациями маршрута.

ipбыл бы моим предпочтительным подходом, но это, конечно, не единственный способ освежевать эту кошку. Вот еще один подход, который использует hostname, если вы предпочитаете что-то более простое/краткое:

$ hostname --all-ip-addresses | awk '{print $1}'  

Или, если вам нужен адрес IPv6:

$ hostname --all-ip-addresses | awk '{print $2}'  

4
03.01.2020, 18:11
1 ответ

Вы очень близки. Прежде чем использовать echo в начале сценария, используйте reset над ним. Пример:

# echo ^G
# reset
# echo ^G MESSAGE TO PUT ON THE TERMINAL

Отправка ^G в эхо вызовет звонок терминала, т. е. подаст звуковой сигнал.

0
27.01.2020, 20:54

Теги

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