2017-07-11 1 views
-1

hi Ich habe ein Skript, wo ich Sudo ausführen und in ein bestimmtes Verzeichnis gehen, und innerhalb dieses Verzeichnisses bearbeiten Dateinamen nach Bedarf. Nachdem sie Namen gewünschte Datei möchte ich Dateien auf Windows-Rechner aber Skript auf FTP nach FTP-Befehle Lesen sagt-:FTP funktioniert nicht UNIX

-bash: Linie 19: Zitat: Befehl nicht gefunden

-bash: Linie 20: Zitat : Befehl nicht

-bash gefunden: Linie 21: put: Befehl nicht

-bash gefunden: Zeile 22: quit: Befehl nicht gefunden

Mein ftp funktioniert, wenn ich normal laufen, so dass es einige andere problem.Script unten- ist:

#!/usr/bin/ 
path=/global/u70/glob 
echo password | sudo -S -l 
sudo /usr/bin/su - glob << 'EOF' 
#ls -lrt 
cd "$path" 
pwd 
for entry in $(ls -r) 
    do 
    if [ "$entry" = "ADM" ];then 
    cd "$entry" 

FileName=$(ls -t | head -n1) 
echo "$FileName" 

FileNameIniKey=$(ls -t | head -n1 | cut -c 12-20) 
echo "$FileNameIniKey" 

echo "$xmlFileName" >> "$xmlFileNameIniKey.ini" 
chmod 755 "$FileName" 
chmod 755 "$FileNameIniKey.ini" 
ftp -n hostname 
quote USER ftp 
quote PASS 
put "$FileName" 
quit 
rm "$FileNameIniKey.ini" 
fi 
done 
EOF 
+0

Sie sollten großen Wert darauf legen, was "dieser andere Typ" gesagt hat. Formatiere deine Frage besser! – nitinr708

Antwort

3

Sie Ihre Fragen verbessern und machen sie leichter zu beantworten und nützlicher für zukünftige Leser durch eine minimale einschließlich, eigenständiges Beispiel. Hier ein Beispiel:

#!/bin/bash 
ftp -n mirrors.rit.edu 
quote user anonymous 
quote pass mypass 
ls 

Wenn er ausgeführt wird, erhalten Sie eine manuelle FTP-Sitzung statt einer Dateiliste:

$ ./myscript 
Trying 2620:8d:8000:15:225:90ff:fefd:344c... 
Connected to smoke.rc.rit.edu. 
220 Welcome to mirrors.rit.edu. 
ftp> 

Das Problem ist, dass Sie gehen davon aus, dass ein Skript ist eine Reihe von Strings, werden automatisch in ein Terminal eingegeben. Das ist nicht wahr. Es ist eine Reihe von Befehlen, die nacheinander ausgeführt werden.

Nichts geschieht mit quote user anonymous bis NACHftp wird beendet, und es wird dann als Shell-Befehl ausführen, anstatt auf den ftp Befehl geschrieben werden.

Stattdessen geben Sie Anmeldeinformationen in der Befehlszeile anmelden und dann sind Befehle in einem hier Dokument:

ftp -n "ftp://anonymous:[email protected]" << end 
ls 
end 

Dies funktioniert wie erwartet:

$ ./myscript 
Trying 2620:8d:8000:15:225:90ff:fefd:344c... 
Connected to smoke.rc.rit.edu. 
220 Welcome to mirrors.rit.edu. 
331 Please specify the password. 
230 Login successful. 
Remote system type is UNIX. 
Using binary mode to transfer files. 
200 Switching to Binary mode. 
229 Entering Extended Passive Mode (|||19986|). 
150 Here comes the directory listing. 
drwxrwxr-x 12 3002  1000   4096 Jul 11 20:00 CPAN 
drwxrwsr-x 10 0  1001   4096 Jul 11 21:08 CRAN 
drwxr-xr-x 18 1003  1000   4096 Jul 11 18:02 CTAN 
drwxrwxr-x 5 89987 546   4096 Jul 10 10:00 FreeBSD 
-1
ftp -n "ftp://anonymous:[email protected]" << end 

oder Dienst nicht

bekannt
+2

Bitte erläutern Sie Ihre Antwort. –