2015-08-11 6 views
0

Я хочу написать сценарий для установки IP-адреса устройства, подключенного к интерфейсу типа eth0, к переменной. я могу получить IP-адрес с помощью этой команды:Сценарий для установки IP-адреса, подключенного к интерфейсу, к переменной оболочки

arp -i eth0 -a 

Выход выше команды:

? (10.42.0.38) at b8:27:eb:07:5d:60 [ether] on eth0 

Я хочу добавить сценарий .bashrc файл, чтобы установить IP-адрес от выхода выше команду переменной $RASPBERRY_IP и использовать ее в другом скрипте. Любая идея, как это сделать?

ответ

1

Ваш ARP таблица не является правильным источником, чтобы найти ваш локальный IP-адрес. Попробуйте команду ip вместо:

RASPBERRY_IP=$(ip addr | awk -F"[ /]" '/inet .*eth0/{print $6}') 

Если вы хотите, чтобы найти другой IP-адрес в сети, вы можете использовать таблицу ARP. Попробуйте эту команду:

RASPBERRY_IP=$(arp -ai eth0 | cut -d' ' -f2 | sed 's/[()]//g') 

Обратите внимание, что $RASPBERRY_IP будет содержать больше IP-адресов, если ваша таблица ARP содержит больше записей на eth0! Пример: 10.42.0.38 10.42.0.39 10.42.0.40. Добавьте grep с MAC-адресом малины. Если вы хотите только первую запись, изменить его на:

RASPBERRY_IP=$(arp -ai eth0 | cut -d' ' -f2 | sed 's/[()]//g;q') 

Не забывайте, что ARP удаляет запись из кэша ARP через некоторое время (обычно 5 минут под Unix).

+0

tnx для вашего ответа, но я не хочу найти свой собственный IP-адрес. Мне нужен IP-адрес устройства, подключенного к моему устройству в этой сети, и для этой цели используется команда arp. – Mehrdad

2

Попробуйте это:

Variable=$(ip addr | grep inet | grep eth0 | awk -F" " '{print $2}'| sed -e 's/\/.*$//') 
+0

Спасибо за ответ, но я получаю эту ошибку, когда я запускаю эту команду в терминале: 'SED: -e выражение # 1, символ 8: неизвестный вариант«s'' – Mehrdad

+0

попробовать это однажды, переменных = $ (ip addr | grep inet | grep eth0 | awk -F "" {print $ 2} '| awk -F'/'' {print $ 1} ') –

+0

Я не хочу устанавливать свой собственный ip для этой переменной. Я хочу установить значение переменной в IP-адрес подключенного устройства в сеть (кроме моего собственного устройства). Для этого используется команда 'arp'. – Mehrdad