Forum » Pomoč in nasveti » skripta v pytonu
skripta v pytonu
petrusko ::
Ojla!
Praktičen problem: imam NAS ki sem si ga ugasnil, in bi ga rad na remote vklopil; ima WOL, ampak zlodja jaz nimam mac addrese; ni ga tudi na DHCPju ker ima NAS statičen IP.
Imam skripto (spodaj), ki pošlje ti. magic paket za določen IP in določeno MAC addreso.
Zdaj bi pa rabil 6 loop zank v pajtonu; ampak hudirja tega ne znam (danes bi mi prav prišlo to znanje)
Pomoje bi moral narediti tole:
addr = '\x42\x42\x42\x42\x42\x42'
zdaj pa tele 42-tke v loopu menjati (od 0 do 255)
nekak takole bi moglo it
addr = ''
for num in range(0,255):
addr += '\x'+num
for num1 in range(0,255):
addr += '\x'+num1
s.sendto('\xff'*6+addr*16, ('192.168.0.255', 9))
ampak neki ne štima;
A lahko kdo pomaga :)
Praktičen problem: imam NAS ki sem si ga ugasnil, in bi ga rad na remote vklopil; ima WOL, ampak zlodja jaz nimam mac addrese; ni ga tudi na DHCPju ker ima NAS statičen IP.
Imam skripto (spodaj), ki pošlje ti. magic paket za določen IP in določeno MAC addreso.
Zdaj bi pa rabil 6 loop zank v pajtonu; ampak hudirja tega ne znam (danes bi mi prav prišlo to znanje)
#!/usr/bin/env python
import socket
s=socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
s.sendto('\xff'*6+'\x42\x42\x42\x42\x42\x42'*16, ('192.168.0.255', 9))
Pomoje bi moral narediti tole:
addr = '\x42\x42\x42\x42\x42\x42'
zdaj pa tele 42-tke v loopu menjati (od 0 do 255)
nekak takole bi moglo it
addr = ''
for num in range(0,255):
addr += '\x'+num
for num1 in range(0,255):
addr += '\x'+num1
s.sendto('\xff'*6+addr*16, ('192.168.0.255', 9))
ampak neki ne štima;
A lahko kdo pomaga :)
Špela P ::
Am.. nimam neki geekovske podlage tko da pojma nimam kaj so tile NAS,WOL,DHCP,socket in podobno :D
ampak upam da ti bo tole vseeno kaj pomagal.
Če ti Python ne požira tiste tvoje zgornje kode, men od oka zgleda k da ti nagaja tisti backslash v stringu -
tko da če slučajno dobiš nek unicode syntax error probi s tistim raw stringom al kaj je že tisto čudo
+ mislim da imaš problem tudi s seštevanjem stringa in integerja
men tole:
addr = ''
for num in range(0,255):
addr += r'\x' + str(num)
print(addr)
vrne:
>>>
\x0\x1\x2\x3\x4\x5\x6\x7\x8\x9\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x100\x101\x102\x103\x104\x105\x106\x107\x108\x109\x110\x111\x112\x113\x114\x115\x116\x117\x118\x119\x120\x121\x122\x123\x124\x125\x126\x127\x128\x129\x130\x131\x132\x133\x134\x135\x136\x137\x138\x139\x140\x141\x142\x143\x144\x145\x146\x147\x148\x149\x150\x151\x152\x153\x154\x155\x156\x157\x158\x159\x160\x161\x162\x163\x164\x165\x166\x167\x168\x169\x170\x171\x172\x173\x174\x175\x176\x177\x178\x179\x180\x181\x182\x183\x184\x185\x186\x187\x188\x189\x190\x191\x192\x193\x194\x195\x196\x197\x198\x199\x200\x201\x202\x203\x204\x205\x206\x207\x208\x209\x210\x211\x212\x213\x214\x215\x216\x217\x218\x219\x220\x221\x222\x223\x224\x225\x226\x227\x228\x229\x230\x231\x232\x233\x234\x235\x236\x237\x238\x239\x240\x241\x242\x243\x244\x245\x246\x247\x248\x249\x250\x251\x252\x253\x254
kar, če razumem prav, je tud tvoj namen?
Če pa sem čist narobe razumela kaj ti pravzaprav hočeš in kaj ti ne štima se pa opravičujem in bom od zdj naprej raje tiho :/
Lp, Špela
ampak upam da ti bo tole vseeno kaj pomagal.
Če ti Python ne požira tiste tvoje zgornje kode, men od oka zgleda k da ti nagaja tisti backslash v stringu -
tko da če slučajno dobiš nek unicode syntax error probi s tistim raw stringom al kaj je že tisto čudo
+ mislim da imaš problem tudi s seštevanjem stringa in integerja
men tole:
addr = ''
for num in range(0,255):
addr += r'\x' + str(num)
print(addr)
vrne:
>>>
\x0\x1\x2\x3\x4\x5\x6\x7\x8\x9\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x100\x101\x102\x103\x104\x105\x106\x107\x108\x109\x110\x111\x112\x113\x114\x115\x116\x117\x118\x119\x120\x121\x122\x123\x124\x125\x126\x127\x128\x129\x130\x131\x132\x133\x134\x135\x136\x137\x138\x139\x140\x141\x142\x143\x144\x145\x146\x147\x148\x149\x150\x151\x152\x153\x154\x155\x156\x157\x158\x159\x160\x161\x162\x163\x164\x165\x166\x167\x168\x169\x170\x171\x172\x173\x174\x175\x176\x177\x178\x179\x180\x181\x182\x183\x184\x185\x186\x187\x188\x189\x190\x191\x192\x193\x194\x195\x196\x197\x198\x199\x200\x201\x202\x203\x204\x205\x206\x207\x208\x209\x210\x211\x212\x213\x214\x215\x216\x217\x218\x219\x220\x221\x222\x223\x224\x225\x226\x227\x228\x229\x230\x231\x232\x233\x234\x235\x236\x237\x238\x239\x240\x241\x242\x243\x244\x245\x246\x247\x248\x249\x250\x251\x252\x253\x254
kar, če razumem prav, je tud tvoj namen?
Če pa sem čist narobe razumela kaj ti pravzaprav hočeš in kaj ti ne štima se pa opravičujem in bom od zdj naprej raje tiho :/
Lp, Špela
Zgodovina sprememb…
- spremenila: Špela P ()
petrusko ::
NAS -> network attached storage -> po domače ena škatla povezana v router :)
WOL -> wake on lan -> protokol preko katerega lahko z nekim "magičnim paketom" poslanim preko UDP protokola zbudiš (zaženeš) računalnik/pc/napravo, ki je priključena na mrežo
DHCP -> DHCP @ Wikipedia ...
superca hvala za namig ... bom jutri programiral dalje ...
načeloma rabim nekaj podobnega:
for num in range(0,255):
addr = ''
addr += r'\x' + str(num)
for num1 in range(0,255):
addr += r'\x' + str(num1)
for num2 in range(0,255):
addr += r'\x' + str(num2)
for num3 in range(0,255):
addr += r'\x' + str(num3)
for num4 in range(0,255):
addr += r'\x' + str(num4)
for num5 in range(0,255):
addr += r'\x' + str(num5)
s.sendto('\xff'*6+addr*16, ('192.168.1.5', 9)) // ta hudir pošlje magični paket
WOL -> wake on lan -> protokol preko katerega lahko z nekim "magičnim paketom" poslanim preko UDP protokola zbudiš (zaženeš) računalnik/pc/napravo, ki je priključena na mrežo
DHCP -> DHCP @ Wikipedia ...
superca hvala za namig ... bom jutri programiral dalje ...
načeloma rabim nekaj podobnega:
for num in range(0,255):
addr = ''
addr += r'\x' + str(num)
for num1 in range(0,255):
addr += r'\x' + str(num1)
for num2 in range(0,255):
addr += r'\x' + str(num2)
for num3 in range(0,255):
addr += r'\x' + str(num3)
for num4 in range(0,255):
addr += r'\x' + str(num4)
for num5 in range(0,255):
addr += r'\x' + str(num5)
s.sendto('\xff'*6+addr*16, ('192.168.1.5', 9)) // ta hudir pošlje magični paket
jype ::
Ne loopat skoz 6 bajtov, ker je to 281474976710656 102-bajtnih (+ drobiž) paketkov in če imaš med računalnikom in NASom 4x10 giga trunk boš potreboval potencialno cel dan, da ga zbudiš.
Če poznaš proizvajalca NASa lahko s to tabelo močno zmanjšaš količino.
Če poznaš proizvajalca NASa lahko s to tabelo močno zmanjšaš količino.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [python] project euler problemOddelek: Programiranje | 1283 (835) | Spura |
» | ubuntu + network sharingOddelek: Pomoč in nasveti | 1252 (1116) | NeMeTko |
» | python problemOddelek: Programiranje | 1460 (1200) | Isotropic |
» | Wireless in LinuxOddelek: Omrežja in internet | 1153 (983) | shock |
» | Iščem 20"/21" LCDOddelek: Kaj kupiti | 1338 (1252) | *TV* |