@Wellspring

Почему не работает команда wget в bash, если переменная берется из файла?

Добрый день.
Только открываю для себя мир скриптов.
Хочу автоматизировать получение информации с большого количества страниц.
Использую утилиту wget.
Все работает, если создаю пользовательскую переменную:
for ip in 10.0.0.1 10.0.0.2 и т.д.
Задача в том, чтобы взять IP адреса(записаные в столбик) из файла hosts.txt пропустить через команду
wget -qO- http://admin:password@$ip/System |grep model.

Если в качестве переменной задаю вывод ip адресов из файла, в котором они записаны по одному в столбик, то команда перестает работать.
Рабочий вариант:
#!/bin/bash
file="hosts.txt"
for ip in 10.0.0.1 10.0.0.2
do
echo "Device on ip address $ip"
wget -qO- http://admin:12345678q@$ip/System |grep model
done


Когда указываю, что переменную нужно брать из файла hosts.txt, скрипт передает работать.
#!/bin/bash
file="hosts.txt"
for ip in $(cat $file)
do
echo "Model for ip address $ip"
wget -qO- http://admin:password@$ip/System |grep model
done
  • Вопрос задан
  • 107 просмотров
Решения вопроса 3
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
В echo $var поменяйте на $ip, а то как-то нелогичненько.
Перед grep поставьте pipe, то бишь вертикальную чёрточку: |
А в остальном - код вполне рабочий.
Ответ написан
DevMan
@DevMan Куратор тега bash
@xolst9
хорошо есть и хорошо весьма
добавте перед циклом, строку:
dos2unix $file
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@dronmaxman
VoIP Administrator
for ip in `cat hosts.txt`
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы