Nie można skopiować pliku za pomocą skryptu z lokalnego hosta do zdalnego hosta


0


Próbuję napisać skrypt, który może skopiować plik z lokalnego hosta do zdalnego hosta. A następnie chcę wykonać ten skrypt z lokalnego hosta. Ale nie jestem w stanie skopiować. Wyszukałem hasło i znalazłem poniższy kod. Ale po wykonaniu tej czynności prosi o hasło. Nawet jeśli nacisnę enter lub podam wartość lub poradzę sobie z tym w skrypcie, nie mogę skopiować pliku. Proszę zasugerować, co może być nie tak z tym skryptem?

#!/bin/bash
Node_ip="10.172.54.2"

IP=("$Node_ip")

in_ip=""

get_ip()  #Give the ip of current machine
{
        for i in `ifconfig | cut -d" " -f1 | sort | grep -v '^$'`
        do
        if [ $i = "eth0" ]
        then
                if ifconfig $i | grep addr: &> /dev/null
                then
                        in_ip="$(ifconfig $i | grep addr: | awk '{print $2}' | cut -d":" -f2)"
                        echo "IP is : $in_ip"
                fi
        fi
        done
}

SCP_PASSWORD="gauranga"

for ne in "${IP[@]}"
do
    get_ip      #in_ip now has ip of current shell
    expect -c "  
       spawn scp gaur@$in_ip:/home/gaur/work_automation/commands.sh root@$ne:/root/gauranga/
       expect yes/no { send yes; exp_continue }
       expect password: { send $SCP_PASSWORD}
       exit
    "
done

Nie wiem, czy to jest problem, ale kiedy skanuję plik, monit o hasło to: „Hasło:”?
FreudianSlip

Tak, mimo że używam oczekiwania na hasło, mam problemy
Gauranga

Odpowiedzi:


2

Dokonując tutaj pewnych założeń:

  • zdalna maszyna jest dostępna z lokalnego urządzenia pod IP 1.2.3.4
  • 1.2.3.4 ma SSH i działa na otwartym porcie 22
  • znasz hasło użytkownika foobar na 1.2.3.4

Aby skopiować skrypt do katalogu domowego foobara:

scp /path/to/script.sh foobar@1.2.3.4:~/

Dodawanie wykonywalnych uprawnień do skryptu i uruchamianie go:

ssh foobar@1.2.3.4 "chmod +x ~/script.sh"

ssh foobar@1.2.3.4 "~/script.sh"

Jeśli musisz to zrobić często / automatycznie, przeczytaj o tym konfigurowanie kluczy SSH do logowania bez hasła . I NIE przechowuj hasła jako zwykłego tekstu w skrypcie, ponieważ stwarza to poważne zagrożenie bezpieczeństwa - klucze SSH zostały stworzone właśnie w tym celu.


0

Zapominasz o „wciśnięciu Enter” dla swoich poleceń wysyłania:

expect -c << END_EXPECT  
   spawn scp gaur@$in_ip:/home/gaur/work_automation/commands.sh root@$ne:/root/gauranga/
   expect { 
       yes/no { send "yes\r"; exp_continue }
       password: { send "$SCP_PASSWORD\r"}
   }
   expect eof
END_EXPECT

Zrobiłem to, co powiedziałeś, ale wciąż prosi o hasło. Po naciśnięciu klawisza Enter kończy się bez przesyłania plików.
Gauranga

Dodaj exp_internal 1 po spawn polecenie, aby zobaczyć, co się dzieje.
glenn jackman
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.