Помощь совсем новичку не представляющему ничего о питоне)

kamidzura

Новичок
Пользователь
Июл 14, 2020
3
0
1
Всем добрый день, тут дали задание для интереса, и для того что бы пощупать что же это за великий Python. Задача такая, есть некий bash код для перезагрузки устройства с помощью ip адреса, есть список с большим количеством этих ip. Нужно сделать скрипт в котором указывается диапазон ip (Начальный и конечный) и скрипт подставляет по одному ip и выводит команду, и так по циклу пока не дойдет до конечного значения. Поскольку я только начинаю в этом ковыряться, понятия не имею с чего начать) Если есть время и нервы чтобы терпеть мою тупость в сие языке программирования, то добро пожаловать, всем пис)))
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
понятия не имею с чего начать)
Написать функцию, которая будет возвращать диапазон ip-адресов по начальному и конечному значению. Потом пройти по полученному диапазону циклом и на каждой итерации запускать bash-скрипт.
 

kamidzura

Новичок
Пользователь
Июл 14, 2020
3
0
1
Написать функцию, которая будет возвращать диапазон ip-адресов по начальному и конечному значению. Потом пройти по полученному диапазону циклом и на каждой итерации запускать bash-скрипт.
Я уже написал код в котором ввожу диапазон, и выводятся по порядку команда с меняющимися ip, но теперь вопрос в том как выводимые команды интерпретировались как команды bash а не просто список текста?(
 

kamidzura

Новичок
Пользователь
Июл 14, 2020
3
0
1
Написать функцию, которая будет возвращать диапазон ip-адресов по начальному и конечному значению. Потом пройти по полученному диапазону циклом и на каждой итерации запускать bash-скрипт.
Все, нашел как сделать

Python:
import os
ip1 = input("IP1:")
ip2 = input("IP2:")
numbers = range(ip1,ip2)

for number in numbers:
  print os.system(("curl -X PUT http://login:password@10.58.0.%d/ISAPI/System/reboot")%(number))

Теперь борюсь с другой проблемой, вобщем хочу еще добавить возможность менять адрес подсети, тоесть запускаю и ввожу подсеть, потом диапазон, но теперь скрипт ругается. Я так понимаю что он не может распознать тип данных ip адреса (ip_addres)

Python:
import os
i = input("Podseti: ")
ip1 = input("IP1: ")
ip2 = input("IP2: ")
j = range(ip1,ip2)
ip_addres = "10.58.%s.%s" % (i, j)

print os.system("curl -X PUT http://login:password@%s/ISAPI/System/reboot") % (ip_addres)
 

Вложения

  • Снимок экрана от 2020-07-20 14-52-07.png
    Снимок экрана от 2020-07-20 14-52-07.png
    52,1 КБ · Просмотры: 3

Asgardov

Пользователь
Пользователь
Май 23, 2020
38
10
8
Тут желательно явно указать приведение типов int()

ip_addres = "10.58.%s.%s" % (i, j)
Подстановка должна происходить в цикле. У вас в j сейчас лежит функция range() поэтому и не работает.
Так же в цикле должен происходить вызов команды.

print os.system("curl -X PUT http://login:password@%s/ISAPI/System/reboot") % (ip_addres)

Подстановка не сработает. Потому как вы выполняете os.system(), а печатаете результат её работы.
Используйте конкатенацию.
 

Форум IT Специалистов