
Szenario: Server: A, B und C (alle Linux)
Datei:File.txt
Jetzt muss ich die Datei mithilfe von SCP von Server A an B&C senden, aber ich muss das Kennwort und den Dateinamen nur einmal eingeben.
Sie müssen wissen, wie Sie das erreichen.
Habe es versucht sshpass
, aber es scheint, als sei es nicht installiert und ich kann es nicht installieren :(
sshpass:command not found
Verwendeter Code: (Hier muss jedes Mal das Passwort eingegeben werden)
#!/bin/bash
echo "Enter Package Name:\c"
read package
package1="$package"
echo
scp ${package1} User@ServerB:/tmp/
scp ${package1} User@ServerC:/tmp/
Antwort1
Sie können die „Passwort“-Anforderung folgendermaßen entfernen. Geben Sie auf dem PC mit der Datei (Server A) in einem Terminal Folgendes ein:
ssh-keygen -t rsa -b 2048
Enter file in which to save the key (/<user>/.ssh/id_rsa): [Hit Enter]
Enter passphrase (empty for no passphrase): [Hit Enter]
Enter same passphrase again: [Hit Enter]
Your identification has been saved in /<user>/.ssh/id_rsa.
Your public key has been saved in /<user>/.ssh/id_rsa.pub.
Anschließend müssen Sie auf Server B und C kopieren /<user>/.ssh/id_rsa.pub
. Gehen Sie auf Server B und C wie folgt vor. HINWEIS: Dies mkdir -p ~/.ssh
ist möglicherweise nicht erforderlich.
mkdir -p ~/.ssh
cat id_rsa.pub >> ~/.ssh/authorized_keys
rm id_rsa.pub
Jetzt können Sie sich ohne Passwort von Server A zu B und C verbinden. Ihr Skript wäre jetzt beispielsweise so einfach wie (mit einer einfachen Dateiprüfung):
#!/bin/sh
ask () {
echo -n "Enter Package Name: "
read package
if [ ! -f "$package" ]
then
echo "
${package} is not a file. Try again.
"
ask
else
upload "$package"
fi
}
upload () {
echo "put \"$1\" \"/tmp/$1\" > sftp.cmd
sftp User@serverB < sftp.cmd
sftp User@serverC < sftp.cmd
rm -f sftp.cmd
}
ask
exit