Dokumentation fra Zensehome
expect - programmed dialogue with interactive programs
Metoden vi fra en Ubuntu sender info til vores Zensehome PC Boks (som har ID 32010 og sidder på IP 10.0.0.110) over det lokale net
Links
http://www.admin-magazine.com/Articles/Automating-with-Expect-Scripts (læs specielt Expect Caveats texten)
http://stackoverflow.com/questions/7789710/expect-script-to-automate-telnet-login
Expect Scripts
Grundscriptet
Dette er "grundscriptet, som søger for at logge ind, agere og logge ud - jeg er ikke 100% sikker på om sleeps faktisk er nødvendige....:
Husker man ikke at lave logout eller fejler scriptet inden, da man få output fra forrige run ved næste run, og i det hele taget lidt "underligheder"
#!/usr/bin/expect spawn telnet 10.0.0.110 10001 expect "'^]'." send ">>Login 32010<<\r" expect ">>Login Ok<<" sleep .5; ...... ...... ...... sleep .5; send ">>Logout<<\r" expect ">>Logout Ok<<" exit
List alle forbrugsregistrende devices
#!/usr/bin/expect spawn telnet 10.0.0.110 10001 expect "'^]'." send ">>Login 32010<<\r" expect ">>Login Ok<<" sleep .5; send ">>Get Devices<<\r" sleep .5; send ">>Logout<<\r" expect ">>Logout Ok<<" exit
Scriptets output
batman:Zensehome bnp$ ./getdevices.exp spawn telnet 10.0.0.110 10001 Trying 10.0.0.110... Connected to 10.0.0.110. Escape character is '^]'. >>Login 32010<< >>Login Ok<< >>Get Devices<< >>Get Devices 18324, 10553, 24955, 19334, 16469, 16476, 17965, 17934, 17951, 27544, 24963, 24958, 24953, 10576, 10598, 24965, 24956, 50371, 24952, 24957, 10604, 10170, 6769, 24944, 24951, 27545, 27540, 27541, 24960, 24946, 24943, 24947, 24941, 24948, >>Logout<< 24949, 27538, 24945, 27542, 24954, 27546, 24720, 16478, 17933, 58739, 24942, 24959, 24718, 24950, 24717, 24719, 16682, 24716, 27539<< >>Logout Ok<< batman:Zensehome bnp$
Tænd et Device
Her tænder vi for 10604 som er en loftslampe hos mig.
#!/usr/bin/expect spawn telnet 10.0.0.110 10001 expect "'^]'." send ">>Login 32010<<\r" expect ">>Login Ok<<" sleep .5; send ">>Set 10604 1<<" sleep .5; send ">>Logout<<\r" expect ">>Logout Ok<<" exit