2015-06-18 2 views
-2

Я хотел получить IP-адрес моего DHCP-сервера в переменной bash.получить IP-адрес DHCP-сервера

как: IP="192.168.1.254"

Я знаю, что этот IP-адрес может быть найден в /var/lib/dhcp/dhclient.leases или в /вар/Журнал/системный журнал, но я не знаю, чтобы извлечь он и положил его в переменной во время моего скрипта (Баш)

EDIT: файл dhclient.leases выглядят как

lease { 
    interface "eth0"; 
    fixed-address 192.168.1.200; 
    option subnet-mask 255.255.255.0; 
    option routers 192.168.1.254; 
    option dhcp-lease-time 7200; 
    option dhcp-message-type 5; 
    option domain-name-servers 192.168.1.254; 
    option dhcp-server-identifier 192.168.1.254; 
    option host-name "bertin-Latitude-E6430s"; 
    option domain-name "laboelec"; 
    renew 1 2015/02/16 10:54:34; 
    rebind 1 2015/02/16 11:53:49; 
    expire 1 2015/02/16 12:08:49; 
} 

Я хочу, чтобы IP с линии option dhcp-server-identifier 192.168.1.254;.

+2

вывесить содержание этих файлов, которые вы хотите извлечь, только один или две строки после и до того, как начнется основная линия. – Jahid

+0

Я сделал это в редакторе .. –

+1

Вы не сказали, какую ОС вы используете, а на моей Linux Mint 17.1 файл '/ var/lib/dhcp/dhclient.leases' пуст, даже если мой сетевой адаптер использует DHCP и что вы собираетесь делать, если/когда файл '/ var/log/syslog' перевернулся и еще не содержит никакой сетевой информации. – user3439894

ответ

0

Для большей совместимости я, наконец, выбрал простое решение, которое должно посылать IP-сервер, как строку, транслируемую каждую секунду. Для этого я использую SOCAT (потому что Netcat не может отправить сообщение для braodcast) мой DHCP сервер запустить этот скрипт в фоновом режиме:

#!/bin/bash 
interface="eth0" 
IP=$(ifconfig $interface | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}') 
Broadcast=$(ifconfig $interface | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f3 | awk '{ print $1}') 
Port="5001" 

while [ true ]; 
do 
    sleep 1 
    echo $IP | socat - UDP4-DATAGRAM:$Broadcast:$Port,so-broadcast 
    #to listen: netcat -l -u $Broadcast -p $Port 
done 
exit 0