Datei kann nicht mit einem Skript vom lokalen Host zum Remote-Host kopiert werden

748
Gauranga


Ich versuche, ein Skript zu schreiben, das eine Datei vom lokalen Host zum Remote-Host kopieren kann. Und dann möchte ich das Skript vom lokalen Host ausführen. Ich kann aber nicht kopieren. Ich googelte und fand den folgenden Code. Aber wenn man das ausführt, fragt es nach Passphrase. Selbst wenn ich die Eingabetaste drücke oder einen Wert angreife oder dies in einem Skript handle, kann ich die Datei nicht kopieren. Bitte schlagen Sie vor, was an diesem Skript falsch sein kann.

#!/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 '' | cut -d":" -f2)" echo "IP is : $in_ip" fi fi done }  SCP_PASSWORD="gauranga"  for ne in "$" 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 
0
Ich weiß nicht, ob dies das Problem ist, aber wenn ich eine Datei scp, lautet die Eingabeaufforderung für das Passwort: "Password:"? FreudianSlip vor 9 Jahren 0
ya, obwohl ich erwarten, dass ich mit dem Passwort rechne, stehen mir Probleme bevor Gauranga vor 9 Jahren 0

2 Antworten auf die Frage

2
Zaroth

Hier einige Annahmen treffen:

  • Der Remote-Computer ist von lokal aus unter IP erreichbar 1.2.3.4
  • 1.2.3.4 läuft SSH auf offenem Port 22
  • Sie kennen das Passwort des Benutzers foobarauf1.2.3.4

So kopieren Sie das Skript in das Home-Verzeichnis von foobar:

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

Ausführbare Berechtigungen zum Skript hinzufügen und ausführen:

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

ssh foobar@1.2.3.4 "~/script.sh"

Wenn Sie dies häufig / automatisch tun müssen, informieren Sie sich über das Einrichten von SSH-Schlüsselpaaren für ein kennwortloses Login . Speichern Sie Ihr Kennwort NICHT als Klartext in einem Skript, da dies ein ernstes Sicherheitsrisiko darstellt. SSH-Schlüssel wurden nur für diesen Zweck erstellt.

0
glenn jackman

Sie vergessen, für Ihre Sendebefehle "Enter" zu drücken:

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 
Ich habe getan, was Sie gesagt haben, aber es fragt immer nach Passphrase. Wenn ich die Eingabetaste drücke, wird sie ohne Dateiübertragung beendet. Gauranga vor 9 Jahren 0
Fügen Sie nach dem Befehl 'spawn' 'exp_internal 1' hinzu, um zu sehen, was los ist. glenn jackman vor 9 Jahren 0