Odottaa | |
---|---|
Tyyppi | työkalu interaktiivisten sovellusten automatisointiin ja testaamiseen |
Kehittäjä | Don Liebes |
Sisään kirjoitettu | C |
Käyttöjärjestelmä | Monialustainen ohjelmisto |
uusin versio | 5.45 (2013-05-02) |
Lisenssi | julkista |
Verkkosivusto | core.tcl.tk/expect |
Expect on Unix - automaatio- ja testaustyökalu, jonka Don Libes on kirjoittanut Tcl - skriptikielen laajennukseksi interaktiivisille sovelluksille, kuten telnet , ftp , passwd , fsck , rlogin , tip , ssh ja muut. Tk :n avulla interaktiivisia sovelluksia voidaan käyttää graafisen X11 - käyttöliittymän (GUI) kanssa .
Expect tukee säännöllistä lausekemoottoria ja perusohjelmointiominaisuuksia, joiden avulla yksinkertaiset komentosarjat voivat hallita tehokkaasti ohjelmia, kuten telnet , ftp ja ssh , joissa ei ole sisäänrakennettua komentosarjakieltä, makroja tai muita ohjelmointimekanismeja.
Tehokas käytettäessä verkkolaitteita - hallittujen (aktiivisten) verkkolaitteiden kokoonpanojen massapäivitys eriytetyllä komentojen suorittamisella (riippuen toimittajasta, ohjelmistoversiosta tai tyypistä (kytkin, reititin jne.)).
Yksinkertainen komentosarjaesimerkki, joka automatisoi telnet-istunnon:
#!/usr/bin/expect ######################################## # ########################################## $remote_server - palvelin, käytetty # #$my_user_id - palvelimen käyttäjätunnus # #$my_password - palvelimen käyttäjän salasana # #$my_command - palvelimella suoritettava komento # # # # Oletetaan, että $etäpalvelin, $my_user_id, $my_password ja $my_command # # on alustettu komentosarjassa aikaisemmin. ################################################# _ #################################### # Avaa telnet-istunto etäpalvelimella ja odota käyttäjätunnuspyyntö. spawn telnet $ Remote_server odottaa "käyttäjänimi:" # Lähetä käyttäjätunnus ja odota salasanapyyntöä. send "$my_user_id\r" expect "password:" # Lähetä salasana ja odota komentotulkkikehotetta. send "$my_password\r" odottaa "%" # Lähetä komento ja odota seuraavaa komentotulkkikehotetta. send "$my_command\r" odottaa "%" # Tallenna tulos muuttujaan. Se voidaan näyttää tai kirjoittaa levylle. aseta tulokset $expect_out ( puskuri ) # Lopeta telnet-istunto ja odota rivin loppu (eof) merkkiä. lähetä "exit\r" odottaa eofEsimerkkinä toinen komentosarja, joka automatisoi ftp-istunnon:
#!/usr/bin/expect # Avaa ftp-istunto etäpalvelimella ja odota käyttäjätunnuspyyntöä. spawn ftp $remote_server expect "username:" # Lähetä käyttäjätunnus ja odota salasanakehotetta. send "$my_user_id\r" expect "password:" # Lähetä salasana ja odota ftp-kehotetta. send "$my_password\r" odottaa "ftp>" # Vaihda binääritilaan ja odota ftp-kehotetta uudelleen. send "bin\r" odottaa "ftp>" # Sammuta syöttökehote. send "prompt\r" odottaa "ftp>" # Hae kaikki tiedostot lähetä "mget *\r" odota "ftp>" # Lopeta ftp-istunto ja odota tiedoston lopun (eof) erikoismerkkiä. lähetä "hei\r" odottaa eofExpect toimii liimana liimaamaan olemassa olevat apuohjelmat yhteen. Pääideana on käyttää olemassa olevia työkaluja mieluummin kuin ratkaista ongelma Expectissä.
Yksi Expectin pääkäyttökohteista on kaupallisissa sovelluksissa. Monet näistä sovelluksista tarjoavat komentoriviliittymän, mutta tämä ei yleensä riitä komentosarjaan . Ne on suunniteltu tarjoamaan käyttäjälle hallintatyökaluja, mutta valmistajat eivät usein käytä rahaa täysimittaisen komentosarjakielen luomiseen .
Expect- skripti voi käynnistää komentotulkin, lukea ympäristömuuttujia, suorittaa joukon Unix-komentoja tiedon saamiseksi ja syöttää sitten saadut tiedot tuotteen komentorivikäyttöliittymään käyttäjän asettaman tavoitteen saavuttamiseksi. Kun skripti on etsinyt tietoja tuotteen komentoriviltä, se voi tehdä älykkään päätöksen toimenpiteistä ja niin edelleen.
Joka kerta kun Expect-toiminto suoritetaan, tulokset sijoitetaan paikalliseen muuttujaan $expect_out. Näin skripti voi samanaikaisesti kerätä tietoja käyttäjälle lähetettäväksi ja tehdä loogisia päätöksiä jatkotoimista olosuhteiden mukaan.
Expectiä käytetään laajasti työkaluna apuohjelmien, ohjelmien ja sulautettujen järjestelmien testipakettien luomiseen. DejaGnu on Expectillä kirjoitettu testauspaketti. Sitä käytettiin gcc-kääntäjän testaamiseen ja se soveltuu hyvin etäkoneilla testaukseen (esimerkiksi sulautettujen järjestelmien kehittämiseen).
Expect voidaan suorittaa säännöllisin väliajoin käyttämällä cronia järjestelmän hallintatehtävien kapseloimiseen. Tämän käyttötavan tarkoituksena on käyttää Expectiä järjestelmän hallintatehtävien suorittamiseen käyttämällä samassa tietokoneessa olevia työkaluja. Oppimiseen ei tarvita lisätyökaluja. Jos ohjelmoija tuntee jo Tcl :n , vaihtaminen Expectiin on helppoa ja suhteellisen yksinkertaista. Koska ohjelman rakenteet ja syntaksi ovat samat, lisäominaisuuksia lisätään.
Yrityksillä on monia vaihtoehtoja käyttää Expectiä sisäisiin tehtäviin. Sitä käyttävät laajasti yritykset, kuten Silicon Graphics , IBM , Hewlett-Packard , Sun Microsystems , Xerox , Amdahl , Tektronix , AT&T , Computervision ja Maailmanpankki suorittaakseen sisäisiä automatisoituja testitehtäviä kehitystyössä, tiedostojen siirrossa, tilien hallinnassa ja verkkotestausprojektit..
Expect on siirretty Pythonille ja Perlille erilaisina laajennuksina. Osa Expect-komentoista on siirretty javaan ja on saatavilla SwitchTermJ :ssä (java-pohjainen pääteemulaattori). Proseduurien toteutus näissä moduuleissa on pohjimmiltaan tulkinta alkuperäisestä versiosta vastaavalla toiminnallisuudella. Kun ymmärrät käsitteen, voit tarvittaessa siirtää sen muille kielille.
Expect perii syntaksin Tcl :stä , joka eroaa muista komentosarjakielistä, kuten bash , csh ja Perl . Sinun on jatkuvasti muistettava, milloin muuttujaa edeltää "$"-merkki ja milloin ei. Expectistä on saatavilla versioita Perlille ja Pythonille niille, jotka tuntevat niiden syntaksin.
Toinen rajoitus on vaikeus siirtää Expect-skriptejä alustojen välillä. Esimerkiksi Expect-komentosarja, joka on kirjoitettu käyttämään useita Unix-apuohjelmia, ei välttämättä toimi, jos se suoritetaan Windowsissa . Aina kun mahdollista, ohjelmoijan tulisi löytää sovellus, jossa on komentoriviliittymä, joka tarjoaa samat tiedot, ja tämä edellyttää todennäköisesti lähetä/ odota-komennon vaihtamista, joka voi olla komentosarjan pääosa. Tätä ongelmaa ei esiinny, jos käytät tcl , perl tai python niiden posix- liitäntöineen tiedostojen avaamiseen (avaa/sulje) ja niin edelleen, ja myös kun käytät etävuorovaikutukseen tavallisia posix-apuohjelmia ( telnet , ftp jne.).
Joten Expect automatisoi työkalut, joissa on komentorivikäyttöliittymä , mutta ei apuohjelmia, joissa on graafinen käyttöliittymä . Vaikka Windows tarjoaa monia erilaisia apuohjelmia, joista monilla on vain graafinen käyttöliittymä ja ne jäävät Expectin soveltamisalan ulkopuolelle. Graafiset sovellukset Windowsissa voidaan automatisoida käyttämällä apuohjelmia, kuten AutoIt .