Re: Python. Вопрос

And99rey

есть скрипт под линукс:

import os

for i in xrange(1,255):
ip = "172.16.15." + str(i)

a = os.system("ip ro >> /tmp/tmptmptmp.txt")
b = open("/tmp/tmptmptmp.txt").read
b = b.split("\n")[-1]

b = os.system("ip ro del " + b + " >> /tmp/ip_ro_del.garbage")

a = os.system("route add default gw " + ip + " >> /tmp/1111.garbage")

ping = os.system("ping -c 3 ya.ru >> /tmp/ping.txt")


if ping == 0:
print "good:", ip

elif ping in [255,256]:
print "nogo:", ip

else:
print "badd:", ip


в выводе
nogo: 172.16.15.40
а
ip ro говорит что сейчас 56ой ип

sergeikozyr

такой скрипт на "пистоне" лучше бы ты на чистом шелле делал :grin:

Helga87

приведи свой вариант
я сейчас никогда не пишу bash скриптов, если есть хоть один if или while. Слишком легко допустить ошибку.

hwh2010

а я вообще ничего не делаю по той же причине
только в форуме флужу, и то постоянно ошибаюсь

apl13

Слишком легко допустить ошибку.
Но ты должен себя сдерживать и не поддаваться искушению! :pop: :kar:

kruzer25

Ну ты ещё исходники винды запости и скажи "что-то она у меня глючит, где ошибка?"
в выводе
nogo: 172.16.15.40
А насколько я могу понять твой говнокод, первой строчкой вывода должно быть xxxx: 172.16.15.1 (xxxx - либо good, либо nogo, либо badd). Никаких break/continue внутри твоего цикла я не вижу, ip ты там тоже не меняешь, на экран выводишь его всегда, а на первом витке цикла у тебя ip точно будет .1, а не .40.
Кто-то из нас врёт?

spensnp

sys.stdout.flush ?

AlexV769

а что должен делать этот скрипт?
я уже молчу про то, что 15 сегмента не существует в принципе.

spensnp

видимо анонимус ищет ход в интернеты

kruzer25

а что должен делать этот скрипт?
Он должен выглядеть как куча говна.
Надо признать, с этим он справляется на отлично.

spensnp

я уже молчу про то, что 15 сегмента не существует в принципе.
это почему?

AlexV769

вот такое фиговое лето вышло.

spensnp

нет серьезно. в каком смысле "15 сегмента не существует в принципе"?
или имелось в виду что в гз нет адресов вида 172.16.15.х?
зы
а то я однажды долго пытался сообразить когда и почему я настроил ойпи вида 169.254.

AlexV769

потому что утверждение, что номер сегмента - это третий октет IP-адреса в общем случае не верно.
Однако этот факт вовсе не мешает наличию адресов вида 172.16.15.X

spensnp

эээ
но ты первый в треде употребил слово "сегмент"

AlexV769

афффтар скрипта его употребил в коде.

spensnp

не вижу там никаких сегментов (
впрочем забей

kruzer25

потому что утверждение, что номер сегмента - это третий октет IP-адреса в общем случае не верно.
Однако этот факт вовсе не мешает наличию адресов вида 172.16.15.X
афффтар скрипта его употребил в коде.
Так аффтар скрипта в коде употребил не "сегмент", а "семейство адресов вида 172.16.15.X".
Сам придумал, что имел в виду автор, сам рассказал всем, что это неправильно :smirk:

And99rey

я уже молчу про то, что 15 сегмента не существует в принципе.
схуябы?

sergeikozyr

приведи свой вариант
я сейчас никогда не пишу bash скриптов, если есть хоть один if или while. Слишком легко допустить ошибку.

seq 1 255 | while read i; do
ip=172.16.15.$i
ip ro | tail -n 1 | xargs ip ro del >> /tmp/ip_ro_del.garbage
route add default gw $ip >> /tmp/1111.garbage
ping -c 3 ya.ru >> /tmp/ping.txt
a=$?
if [ $a -eq 0 ]; then
echo "good:$ip"
elif [ $a -eq 255 -o $a -eq 256 ]; then
echo "nogo:$ip"
else
echo "badd:$ip"
fi
done

hwh2010

афффтар скрипта его употребил в коде.
где?

AlexV769

for i in xrange(1,255):
ip = "172.16.15." + str(i)

Корректно было бы
for i in xrange(3073,4094):
ip = "172.16." + str(i)

AlexV769

ip ro | tail -n 1 | xargs ip ro del >> /tmp/ip_ro_del.garbage
Даже так мне это кажется какой-то уличной магией

sergeikozyr

Даже так мне это кажется какой-то уличной магией
ты не писал систему контроля доступности серверов на баше :grin: :grin: :grin:
В некоторых подразделениях яндекса любят этим заниматься :grin:

AlexV769

Я в своё время писал мониторинг на баше.
Не в Яндексе, впрочем.

kruzer25

Корректно было бы
code:--------------------------------------------------------------------------------for i in xrange(3073,4094):
Может быть, и корректнее, но гораздо непонятнее.

hwh2010

Корректно было бы
чел перебирает гостевые IPшники, не?

AlexV769

я не знаю где начинаются и заканчиваются гостевые адреса.
Оставить комментарий
Имя или ник:
Комментарий: