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
linux
shell-script
expect
Gauranga
źródło
źródło
Odpowiedzi:
Dokonując tutaj pewnych założeń:
1.2.3.4
1.2.3.4
ma SSH i działa na otwartym porcie 22foobar
na1.2.3.4
Aby skopiować skrypt do katalogu domowego foobara:
scp /path/to/script.sh [email protected]:~/
Dodawanie wykonywalnych uprawnień do skryptu i uruchamianie go:
ssh [email protected] "chmod +x ~/script.sh"
ssh [email protected] "~/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.
źródło
Zapominasz o „wciśnięciu Enter” dla swoich poleceń wysyłania:
źródło
exp_internal 1
pospawn
polecenie, aby zobaczyć, co się dzieje.