繁体   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