Minun täytyy kirjoittaa komentosarja, joka toimii tietokoneella, jossa on Centos 7, ja muodostaa yhteyden toiseen tietokoneeseen, jossa on Centos 7 Suorita ssh: n avulla konsolikomento, esimerkiksi ”ls -la” ja tallenna sen ulostulo tiedostoon, jotta voit myöhemmin analysoida tuotoksen.

Olen kirjoittanut seuraavan EXPECT-komentosarjan:

ssh_connection.exp:

#!/usr/bin/expect -f set timeout 120 spawn ssh [email protected] expect "assword:" send "PASSWORD\r" expect "prompt#" sleep 5 puts "Executing ls -la" send "ls -la\r" sleep 10 puts "Executing ps -af" puts "ps -af\r" sleep 10 puts "Closing the ssh session\r" send "exit\r" 

Tämä komentosarja yhdistyy oikein ssh: n kautta koneeseen, jonka IP = 129.0.0.10, ja näyttää näytöllä viestit joka näkyy ”put” -kohdassa: Suoritetaan ls -la Suoritetaan ps -af ssh-istunnon sulkeminen

Se ei kuitenkaan näytä lähetettyjen komentojeni suorittamisen tulosta:

ls -la ps -af 

Mitä vikaa tässä komentosarjassa on?

Kuinka voin tehdä tiedostoon tallennettujen edellisten komentojen lähdön analysoimaan sitä myöhemmin bashilla komentosarja tai C-ohjelma?

Kommentit

  • Käytä vain sta ndard ssh -komento ssh-avaimilla ja heredokilla
  • Vaikuttaa siltä, että olet liian monimutkainen. Sinun ei tarvitse käyttää arvoa automatisoimaan tavaraa ssh: n kautta.
  • Yrititkö komentoa kuten spawn ssh [email protected] ls -la>Ls?
  • Suorita komentosarja expect -d ssh_connection.exp ja katso missä ongelmat ovat. Ensimmäinen asia, jota ' suosittelen, on korvata kaikki unet expect "prompt#"

Vastaa

Sinun ei tarvitse käyttää tätä expect. ssh -komento voi ottaa lisää argumentteja komennoista, jotka haluat suorittaa SSH-yhteyden kautta.

Vaihe # 1

Asenna SSH-avainpari (google se) ja kopioi sitten SSH avain etäpalvelimeen. Tätä varten suosittelen käyttämään ssh-copy-id. Katso vastaukseni tähän U & LQ & A otsikkoon: Kuinka kopioida oikein yksityiset avaimet etäpalvelimilta paikalliseen koneeseeni, jotta voin muodostaa yhteyden ssh: n avulla .

Vaihe # 2

Nyt mahdollisuus SSH-palvelimeen paikallaan avaimen avulla , yllä oleva ongelmasi muuttuu seuraavaksi:

$ ssh [email protected] "ls -la; ps -af" 

Voit hemmotella itseäsi ja käyttää täällä olevia dokumentteja (heredocs aka . here-docs) tämän tekniikan parantamiseksi edelleen.

$ ssh [email protected] <<EOF > ls -la > ps -af > EOF 

tai laita komennot tiedostoon ja välitä ne osoitteeseen ssh:

$ ssh [email protected] < my.cmds 

kommentit

Vastaa

Kiitos,

Olen muokannut komentosarjaani korvaamalla rivi:

kutee ssh [email protected]

tämän toisen kanssa, kuten kerrot minulle:

kutee ssh [email protected] ”ls -la; ps -af”

Nyt näen komennot näytöllä ja voin ohjata tiedoston.

Seuraavaksi yritin sovittaa tämän komentosarjan suorittamaan komennon toisella koneella, joka on Cisco-tyyppinen kytkin (se ei ole Cisco, mutta se on yhteensopiva).

Skripti, jolla yhdistän kytkimeen ssh: n avulla, on:

** #! / usr / bin / várható -f

aseta aikakatkaisu 120

kutee ssh [email protected] ”näytä vlan 500”

várita ”assword:”

lähetä ”SALASANA \ r”

odotettavissa ”-kehote # ”

sleep 5

laittaa” ssh-istunnon sulkemisen \ r ”

send” exit \ r ”**

Tämä ei toimi kytkimessä ja saan tämän virheen:

spawn ssh [email protected] näytä vlan 501

[email protected]: n salasana:

imish: virheellinen vaihtoehto – ”c”

Kokeile lisää `imish –help tiedot.

send: spawn id exp6 not open

while executing 

”send” exit \ r ””

(file "./ssh_script_v3.exp" line 7) 

Joten minun on käytettävä odottavaa komentosarjaa, joka lähettää komennon ”send” -toiminnolla:

! / usr / bin / várta

kutee ssh käyttäjä@129.0.0.50

odotettavissa ”assword:”

lähetä ”käyttäjä \ r”

odotettavissa ”>”

sleep 5

send ”sh vlan 500 \ r”

sleep 5

send ”exit \ r”

Nyt en saa virheitä, mutta mitään ei näytetä näytöllä.

Olen lukenut, että tämä tapahtuu, koska linux- ja UNIX-järjestelmät puskuroivat lähdön automaattisesti, kun ne toimivat ei-vuorovaikutteisesti. Luulen, että Expect voi saada ohjelmat ajattelemaan, että ne toimivat vuorovaikutteisesti ”unbufferin” avulla, mutta en tiedä miten käyttää ”unbuffer” -toimintoa ”send” -toiminnon kanssa. Asennukseni tehdä tämä, älä toimi.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *