2017-05-30 117 views
0

我試圖將文件的內容加載到避免在執行生成文件任務期間在執行生成文件任務期間-p調用命令時顯示敏感數據(如密碼)從生成文件任務中的文件內容生成命令

該命令在沒有變量替換的情況下運行。我試圖運行一個docker login碼頭註冊表,但理論上這應該是不相關的,我的意思是:下面的方法可以用於任何命令而不僅僅是docker命令。

我想我搞亂了雙引號的組合和反引號`或類似的東西,但我不能找到一個辦法讓這個工作。

到目前爲止與此makefile內容的bash/GNU-化妝的組合沒有運氣:

REGISTRY_PSW_FILE=./volume/conf/docker-registry.conf 
REGISTRY_PSW=`cat $(REGISTRY_PSW_FILE)` 
REGISTRY_LOGIN_COMMAND=docker login my-own-registry.something.com -u myRegistryUsr -p $(REGISTRY_PSW) 

docker-push: 
    @echo -e "\n\n\nPushing the docker image to the registry" 
    @echo -e "stuff: $(REGISTRY_PSW)" 
    @echo -e "more stuff: $(REGISTRY_LOGIN_COMMAND)" 
    $(REGISTRY_LOGIN_COMMAND) 
    @echo "DONE" 

我已經嘗試不同的東西也是這樣的東西:

REGISTRY_LOGIN_COMMAND=`docker login my-own-registry.something.com -u myRegistryUsr -p $(REGISTRY_PSW)` 

或者這一個使用直接cat命令:

REGISTRY_LOGIN_COMMAND=docker login my-own-registry.something.com -u myRegistryUsr -p `cat $(REGISTRY_PSW_FILE)` 

但我不斷收到不同的錯誤,如:

  • flag needs an argument: 'p' in -p \n See 'docker login --help'.
  • Error response from daemon: login attempt to https://my-own-registry.something.com/v2 failed with status: 401 Unauthorized

makefile任務我我正在使用因爲我試圖避免在命令的輸出中顯示密碼(如在顯示more stuff: <THE THING I AM TRYING TO HIDE>echo中),反正即使使用echoeval這樣的組合也是如此@eval "echo -e $(REGISTRY_LOGIN_COMMAND)"它仍然不能用於類似的輸出錯誤。

我使用的cygwin用的GNU-make以下版本:

$ make -v 
GNU Make 4.2.1 
Built for x86_64-unknown-cygwin 
Copyright (C) 1988-2016 Free Software Foundation, Inc. 
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> 
This is free software: you are free to change and redistribute it. 
There is NO WARRANTY, to the extent permitted by law. 

我在做什麼錯?

回答

1

如果Make直接運行docker,我看不出用戶看到docker命令(及其包含的密碼)的方法。

但如果製作構造包含泊塢窗命令,並執行一個腳本,這是另一個故事:

DOCKER_SCRIPT = run_docker 

docker-push: 
    sed -e 's/^/docker login my-own-registry.something.com -u myRegistryUsr -p /' -e 's|$$| >/dev/null/|' $(REGISTRY_PSW_FILE) > $(DOCKER_SCRIPT) 
    chmod +x $(DOCKER_SCRIPT) 
    ./$(DOCKER_SCRIPT) 
+0

謝謝:)我看到一個錯誤說'./run_docker:第1行是:/ dev/null /:不是目錄',但我認爲只是一些Windows/cygwin/bash的瘋狂,我決定將整個'docker login'命令放入一個bash腳本中,並從'Makefile'任務中調用它' 。/體積/ CONF /搬運工-registry.sh'。當登錄成功時,輸出中沒有顯示任何密碼,所以現在沒問題。在同一個'Makefile'任務中,我也在標記一個圖像,然後成功推動它,所以現在都好。我可以稍微調整分隔密碼的登錄腳本,但沒關係。 – TPPZ