Bir dosyayı komut dosyası aracılığıyla yerel ana bilgisayardan uzak ana bilgisayara kopyalayamıyor


0


Yerel ana bilgisayardan uzak ana bilgisayara bir dosyayı kopyalayabilecek bir komut dosyası yazmaya çalışıyorum. Ve sonra bu betiği yerel bilgisayardan çalıştırmak istiyorum. Ancak kopyalayamıyorum. Googled ve aşağıdaki kodu buldum. Ancak bunu yürütürken, parola soruyor. Enter tuşuna bassam ya da bir değer versem ya da kodda işlesem bile, dosyayı kopyalayamıyorum. Lütfen bu senaryoda neyin yanlış olabileceğini önerin?

#!/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

Sorunun bu olup olmadığını bilmiyorum, ancak bir dosyayı taradığımda şifre sorusu: "Şifre:"?
FreudianSlip

ya parola bekliyor olmama rağmen sorunla karşılaşıyorum
Gauranga

Yanıtlar:


2

Burada bazı varsayımlarda bulunmak:

  • uzak makineye IP altında yerel olandan erişilebilir 1.2.3.4
  • 1.2.3.4 SSH açık ve açık port 22'de çalışıyor
  • kullanıcının şifresini biliyorsun foobar üzerinde 1.2.3.4

Komut dosyasını foobar'ın ana dizinine kopyalamak için:

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

Komut dosyasına çalıştırılabilir izinler ekleme ve çalıştırma:

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

ssh foobar@1.2.3.4 "~/script.sh"

Bunu sık / otomatik olarak yapmanız gerekirse, hakkında bilgi edinin. SSH keypairs'in şifresiz bir giriş için ayarlanması . Ve şifrenizi düz metin olarak saklamayın, ciddi bir güvenlik riski oluşturduğu için SSH anahtarları sadece bu amaç için yapıldı.


0

Gönderme komutlarınız için "hit enter" u unutuyorsunuz:

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

Dediğini yaptım ama yine de parola istiyor. Enter tuşuna bastığımda dosya aktarımı olmadan çıkıyor.
Gauranga

eklemek exp_internal 1 sonra spawn Neler olup bittiğini görmek için komut.
glenn jackman
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.