Wie bekomme ich `machen`, um den Benutzer auffordern, ein Kennwort und speichern Sie es in eine Makefile variable?

Ich Schreibe ein Makefile, und einige der Befehle, die das makefile ausgeführt, benötigen Sie ein Kennwort. Ich möchte dem Benutzer die Möglichkeit, entweder geht dies in so einem Makefile Variablen, die mit make PASSWORD=password oder wenn der Benutzer nicht weitergeben, dann fordert den Benutzer und speichern Sie Ihre Antwort in Sprach-Makefile-variable.

Im moment bin ich in der Lage zu überprüfen, die Makefile-variable, und dann als Teil meiner target-spezifische Regeln schreiben, die shell-Befehle, die den Benutzer auffordern, das Passwort und speichern Sie es in eine shell-variable. Aber diese variable ist nur verfügbar, um die spezifische Schale und nicht irgendwelche anderen.

Wie lese ich etwas aus der Benutzer-und speichern Sie in einer Variablen?

Ich habe versucht, die folgenden:

PASSWORD ?= $(shell read -s -p "Password: " pwd; echo $pwd)

aber die Eingabeaufforderung ist nicht gedruckt. Ich habe auch versucht echo "Password: " inneren Schale, die aber nicht ausgedruckt.

Irgendwelche Ideen?

Edit:

Klären, das Passwort muss gesetzt werden für ein bestimmtes Ziel, also ich habe so etwas wie dieses:

PASSWORD := 

my-target: PASSWORD ?= $(shell read -s -p "Password: " pwd; echo $$pwd)

my-target:
    # rules for mytarget that use $(PASSWORD)

Edit 2:

Habe das problem gefunden. Wenn ich PASSWORD := am Anfang des Skripts, es setzt PASSWORD auf einen leeren string, und dies wiederum bewirkt, dass die ?= übersprungen werden (da PASSWORD) ist bereits gesetzt.

  • Welchen Befehl muss ein Passwort? ssh? Konnte verwenden Sie ssh-login ohne Passwort statt? askubuntu.com/questions/46930/...
  • Nein, nicht ssh. Ich muss curl 3 mal gegen einen service, der eine Authentifizierung erfordert. curl kann prompt für sein eigenes Kennwort, aber ich möchte lieber nicht erzwingen, dass der Benutzer geben Sie es 3 mal.
  • Ich fühle mich wie Klartext-Passwörter in die Make-Variablen können anfällig für Ausbeutung. Ich bin mir nicht sicher, wie Sie es zu nutzen, aber es könnte leicht sein, dass ein böswilliger Benutzer-dump der makefile-Variablen (make-pn), und bekommen das Passwort. Just sayin' 😉
  • Dieser Benutzer würde sich um den gleichen Benutzer ausgeführt machen und das Passwort einzugeben, es sei denn, ein anderer Benutzer Zugriff auf den Speicher des einen Befehl ausführen, durch den ersten Benutzer,... in diesem Fall, sind alle Wetten ab, und Ihre OS ist komplett gefährdet.
  • Ja, wenn Ihr ein curl Passwort, ich weiß nicht von irgendeiner anderen Weise zu beschäftigen als das, was Sie tun. Ich denke, das worst-case-Szenario bin ich besorgt über jemand muss zum Debuggen von Makefiles in die Zukunft und Deponien make -pn logs auf die Festplatte irgendwo. Dann würde der böswillige Benutzer finden das Klartext-Passwort in der build-log.
InformationsquelleAutor bluesmoon | 2013-12-19
Schreibe einen Kommentar