簡體   English   中英

使用“.filename”從另一個文件中提取變量憑據的 Bash 腳本

[英]Bash script to pull variable credentials from another file using ". filename"

在 Windows 10 上運行 Ubuntu 18.04 子系統,但也嘗試在 Ubuntu 18.04 Google 雲虛擬機上執行此操作。

我已經意識到將我的登錄憑據放入我的腳本中是一個相當愚蠢的想法,不僅是為了安全風險,而且因為如果我更改密碼,我將不得不編輯每個腳本......

我發現我應該能夠擁有一個包含我的憑據的文件,並在我使用“.file”運行我的腳本時將它們“內聯”,但是當我運行我的腳本時,它只會返回一個錯誤,該文件不是成立。

在我運行腳本的目錄上使用ls包含:

  • 測試文件
  • 憑據

“憑證”文件內容

USER=<username>
PWD=<password>

test.sh 的當前腳本

#!/bin/bash

set -eu

DS=$(date "+%Y-%m-%d" -d "11 days ago")
DE=$(date "+%Y-%m-%d" -d "1 day ago")

. credential

rm -f cookiejar

curl  /dev/null -s -S -L -f -c cookiejar 'https://url/auth/authenticate' -d name=$USER -d passwd=$PWD

錯誤信息

+ set -eu
+ date +%Y-%m-%d -d 11 days ago
+ DS=2020-01-05
+ date +%Y-%m-%d -d 1 day ago
+ DE=2020-01-15
+ account=465
+ . credential test.sh: 9: .: credential: not found

我試過弄亂腳本的“.credential”行之間的空格,並試圖找出我可能在網上做錯了什么,但無法正確地谷歌搜索以找到相關答案。

有人可以確認我在這里遺漏/不知道的內容,或者向我指出可能有幫助的文檔嗎? 這是我第一次嘗試做這樣的事情,如果這是一個基本問題,我深表歉意。

. 使用路徑查找來查找由其參數命名的文件。 由於當前的工作目錄通常不在您的PATH (也不應該) . 不會找到文件。 相反,使用

. ./credential

繞過PATH查找。

但是,這並不是很安全,因為現在您只能從正確的目錄運行腳本。 要么把credential一個目錄上您的PATH ,或使用絕對路徑來指定credential所在。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM