unerwartetes EOF bei der Suche nach übereinstimmendem `) '

581
wapmorgan

Ich erhalte diese Fehler- Bash in meinem virtuellen Hosting in Cron-Aufgaben. Mein Befehl lautet wie folgt:

/usr/bin/mysqldump --user=USERNAME --password="C\(mRA0_ifmv\(" DATABASE > ROOTFOLDER/backup/$(date +%F).sql && gzip ROOTFOLDER/backup/$(date +%F).sql 

Ich habe echten Benutzer, Datenbank und Home-Ordner aus Sicherheitsgründen versteckt . Ich verstehe also, dass mein Passwort diesen Fehler verursacht, aber ich möchte es nicht ändern.

Wie kann ich das Zeichen der offenen Klammer umgehen oder diesen Fehler vermeiden? Warum funktioniert "\" nicht?

3
Von 'man mysqldump': __Das Festlegen eines Passworts in der Befehlszeile sollte als unsicher angesehen werden .__ Siehe Abschnitt 6.1.2.1, „Richtlinien für Endbenutzer zur Passwortsicherheit“. Sie können eine Optionsdatei verwenden, um zu vermeiden, dass das Kennwort in der Befehlszeile angegeben wird. Hastur vor 9 Jahren 1
Concur. Ihr Problem hier ist, dass Sie in erster Linie `--password =` verwenden. Verwenden Sie stattdessen eine Ini-Datei, und das gesamte Problem verschwindet UND wird sicherer. Shadur vor 9 Jahren 0

1 Antwort auf die Frage

2
Steven

Verwenden Sie einfache Anführungszeichen für das Kennwort.

--password='C\(mRA0_ifmv\(' 

Bash Manual: Einzelne Anführungszeichen

Das Einschließen von Zeichen in einfache Anführungszeichen ('' ') behält den Wortwert jedes Zeichens in den Anführungszeichen bei. Ein einfaches Anführungszeichen darf nicht zwischen einfachen Anführungszeichen stehen, auch wenn ein Backslash vorangestellt ist.

Bash Manual: doppelte Anführungszeichen

Das Einschließen von Zeichen in doppelte Anführungszeichen ('' ') behält den Literalwert aller Zeichen in den Anführungszeichen mit Ausnahme von' $ ',' '', '\' und, wenn die Erweiterung des Verlaufs aktiviert ist, '!'.

Da "\" nicht Teil des Passworts ist, muss ich Backslashes entfernen, oder? wapmorgan vor 9 Jahren 0
Das ist richtig. Hat es funktioniert? Steven vor 9 Jahren 0
Nein, "unerwartete EOF bei der Suche nach übereinstimmendem`) '". Ich habe jedoch vergessen zu erwähnen, dass dies keine echte Bash ist, es ist Jailshell von cPanel distributive. wapmorgan vor 9 Jahren 0