AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-92670

CodeMed's questions

Martin Hope
CodeMed
Asked: 2022-09-30 17:11:11 +0800 CST

无意中将秘密打印到 cloud-init 日志中

  • 0

下面的两行 bash 代码将秘密提取到运行 RHEL8 的 Azure VM 的 cloud-init 脚本中。但是这两行中的每一行都有一个意想不到的副作用,就是将秘密打印到 cloud-init 日志中,让全世界都能看到。

为了防止他们将秘密打印到日志中,必须在下面的两行中具体更改什么?

myVar=$(az keyvault secret show --name "mySecretsFile" --vault-name "$VAULT_NAME" --query "value")
echo "$myVar" | base64 --decode --ignore-garbage >>/home/username/somefoldername/keys.yaml

上面两行的日志如下所示,除了这里我们已经编辑了公共论坛的实际秘密。在实际的日志中,秘密被打印了两次:

+ myVar='"really-long-alpha-numeric-secret-redacted-for-stack-exchange"'
+ echo '"really-long-alpha-numeric-secret-redacted-for-stack-exchange"'

这可能是一个关于如何禁止在日志中打印某些类型的内容的简单 bash 问题。

bash shell-script
  • 1 个回答
  • 61 Views
Martin Hope
CodeMed
Asked: 2022-04-15 13:52:24 +0800 CST

base64:尝试解码 yaml 文件内容时出现无效输入错误

  • -1

必须在下面的 bash 中更改哪些特定语法才能成功解码引发下面错误的 base64 编码值?

错误:

在 Azure 中运行的 RHEL 8 vm 的终端中键入以下 3 个简单命令:

[user@myVM ~]$ myVar=$(az keyvault secret show --name "secretName" --vault-name "vaultName" --query "value")
[user@myVM ~]$ echo $myVar
"very.long.base64.encoded.string.representing.the.original.yaml"
[user@myVM ~]$ echo $myVar | base64 --decode
base64: invalid input

第二个命令打印长字符串的有效 base64 编码,可能是几百个字符或更多编码。

该错误base64: invalid input似乎表明base64程序无法将编码输入接受到其解码命令中。

源数据:

上面的 base64 编码数据的内容来自一个大概有 20 行的 yaml 文件,在创建 VM 之前,该文件通过terraform 的fileBase64()命令传递如下:

resource "azurerm_key_vault_secret" "secretName" {
  name         = "secretName"
  value        = filebase64(var.keySourceFile) 
  key_vault_id = azurerm_key_vault.vaultName.id
}

尝试用户建议的结果:

根据@roaima 的建议,我们尝试了以下方法:

[user@myVM ~]$ az keyvault secret show --name "secretName" --vault-name "vaultName" --query "value"
"very.long.base64.encoded.string.representing.the.original.yaml=="
[user@myVM ~]$ myVar=$(az keyvault secret show --name "secretName" --vault-name "vaultName" --query "value")
[user@myVM ~]$ echo "$myVar" | base64 --decode >/dev/null 
base64: invalid input 

如您所见,在将原始命令放入myVar. 请注意,它以双引号结尾==并被双引号包围。

发送到 terraform 的原始源文件中的原始数据如下所示:

secret1: value1
secret2: value2 
...
secretN: valueN

然后我们尝试了以下操作,但您可以看到没有返回任何内容:

[user@myVM ~]$ printf '%s\n' "$myVar" | base64 --decode --ignore-garbage >/dev/null
[user@myVM ~]$
rhel bash
  • 1 个回答
  • 1530 Views
Martin Hope
CodeMed
Asked: 2020-01-29 16:27:56 +0800 CST

无法识别文件。拒绝连接

  • 1

connection refused在 Amazon Linux 2 实例上,每次运行引用文件路径的命令时,命令行都会引发以下错误。当使用httpsurl 代替文件路径时,也会引发相同的错误。

为什么会发生这种情况,如何解决这个问题,以便可以从命令行读取和使用文件?

这是控制台输出:

[kubernetes-host@ip-of-ec2-instance ~]$ sudo kubectl apply -f rbac-kdd.yaml | tee kubeadm-rbac-kdd.out
unable to recognize "rbac-kdd.yaml": Get http://localhost:8080/api?timeout=32s: dial tcp 127.0.0.1:8080: connect: connection refused
unable to recognize "rbac-kdd.yaml": Get http://localhost:8080/api?timeout=32s: dial tcp 127.0.0.1:8080: connect: connection refused
[kubernetes-host@ip-of-ec2-instance ~]$

文件的相对路径是正确的。该命令正在尝试将 calico 应用于由 创建的 Kubernetes 集群kubeadm,如果有帮助的话。 但我认为这是一个基本的 linux 问题。

SELinux 已在此 Amazon Linux 2 EC2 实例上禁用。

在我尝试确定可能的原因时,希望能得到一些指示。


问题隔离:

另外,.kube/config指示端口的内容6443如下:

[kubernetes-host@ip-of-ec2-instance ~]$ cat /home/kubernetes-host/.kube/config
apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: <encrypted-certificate-authority-data-here>
    server: https://ip-of-ec2-instance:6443
  name: kubernetes
contexts:
- context:
    cluster: kubernetes
    user: kubernetes-admin
  name: kubernetes-admin@kubernetes
current-context: kubernetes-admin@kubernetes
kind: Config
preferences: {}
users:
- name: kubernetes-admin
  user:
    client-certificate-data: <encrypted-client-certificate-data-here>
    client-key-data: <encrypted-client-key-data-here>
[kubernetes-host@ip-of-ec2-instance ~]$

问题似乎是kubectl apply命令正在使用 port8080而 Kubernetes apiserver 正在使用 port 6443。如何纠正这种不匹配以使kubectl apply命令使用 port 6443?

进一步,kubectl能够看到6443是正确的端口,并且curl可以到达正确的6443端口,如下:

[kubernetes-host@ip-of-ec2-instance ~]$ kubectl cluster-info
Kubernetes master is running at https://ip-of-ec2-instance:6443
KubeDNS is running at https://ip-of-ec2-instance:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy  

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

[kubernetes-host@ip-of-ec2-instance ~]$ curl https://ip-of-ec2-instance:6443
curl: (60) SSL certificate problem: unable to get local issuer certificate
More details here: https://curl.haxx.se/docs/sslcerts.html

curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.
[kubernetes-host@ip-of-ec2-instance ~]$

[kubernetes-host@ip-of-ec2-instance ~]$ curl https://127.0.0.1:6443
curl: (60) SSL certificate problem: unable to get local issuer certificate
More details here: https://curl.haxx.se/docs/sslcerts.html

curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.
[kubernetes-host@ip-of-ec2-instance ~]$

为什么kubectl apply不能映射到端口6443,什么时候kubectl cluster-info能够映射到正确的端口?

files command-line
  • 1 个回答
  • 786 Views
Martin Hope
CodeMed
Asked: 2019-06-15 15:05:20 +0800 CST

如何在 Amazon Linux 2 中永久设置环境变量

  • 8

我尝试了许多方法来设置运行 Amazon Linux 2 的永久环境变量 EC2 实例,但没有一种方法在用户和登录会话之间是持久的。

什么特定的语法和过程将成功设置环境变量,以便所有用户和每个会话期间都可以使用变量的值?

到目前为止,我尝试过的方法包括在 USERDATA 的实例启动脚本期间分别在以下三个文件中的每个文件中设置值:

/etc/csh.cshrc
/etc/environment
/etc/profile

我一次尝试每个文件,而不是同时尝试所有三个。

我也尝试过使用 Python os.environ,但这也不起作用。


用户建议

根据@NasirRiley 的建议,当我创建一个setVars.sh文件并将其放入/etc/profile.d实例的USERDATA启动序列时,它现在可以工作:

#!/bin/bash    
export SOME_VAR_NAME=some-var-value  
rhel environment-variables
  • 2 个回答
  • 20451 Views
Martin Hope
CodeMed
Asked: 2019-06-01 14:23:12 +0800 CST

yum lockfile 被另一个用户持有

  • 4

Amazon Linux 2实例由 Ansible Playbook 操作,该手册一个接一个地执行多个yum任务。

需要对以下语法进行哪些特定更改才能使连续yum任务运行而不会因进程冲突而停止?

目前,yum下面的第二个任务失败了,因为 Ansible 不知道如何处理听到前面的yum任务还没有放开yum lockfile.

yum这是调用以下第二个任务 时归档的当前错误消息:

TASK [remove any previous versions of specific stuff] ************************************************************************************************************************************
fatal: [10.1.0.232]: FAILED! => {"changed": false, "msg": "yum lockfile is held by another process"}

两个连续的yum任务目前写成如下:

 - name: Perform yum update of all packages
   yum:
     name: '*'
     state: latest

 - name: remove any previous versions of specific stuff
   yum:
     name: thing1, thing2, thing3, thing4, thing5, thing6
     state: absent

我想解决方案只是添加一些东西告诉 Ansible 等到第一个任务的yum锁被释放。但是应该使用什么语法呢?

yum amazon-ec2
  • 1 个回答
  • 11617 Views
Martin Hope
CodeMed
Asked: 2019-06-01 09:15:22 +0800 CST

名称=packages-microsoft-com-prod 的多个 yum 存储库

  • 0

一组 Amazon Linux 2 实例name=packages-microsoft-com-prod在冗余yum repositories中具有不同名称的重复实例。什么是删除对同一包的重复引用而不导致在同一操作系统中运行的其他东西中断的安全方法?

以下是 grep 说明问题的方式:

[user-name@host-name ~]$ sudo grep name=packages-microsoft-com-prod /etc/yum.repos.d/*
/etc/yum.repos.d/microsoft-prod.repo:name=packages-microsoft-com-prod
/etc/yum.repos.d/msprod.repo:name=packages-microsoft-com-prod

包的两个实例导致实例中的其他程序返回错误,表明它们不知道要使用两个同名包中的哪一个。

我试过yum update了,但问题仍然存在。我可以编写一些 bash 脚本来检查重复名称并删除一个 repo,直到没有重复。但我担心删除回购可能是一种黑客方法,可能会在机器的其他地方造成附带损害。


用户要求:

根据@JeffSchaller 的评论,我添加了以下终端输出来详细说明情况:

[user-name@host-name ~]$ grep -c ^name= /etc/yum.repos.d/microsoft-prod.repo /etc/yum.repos.d/msprod.repo
/etc/yum.repos.d/microsoft-prod.repo:1
/etc/yum.repos.d/msprod.repo:1

[user-name@host-name ~]$ rpm -qf /etc/yum.repos.d/microsoft-prod.repo /etc/yum.repos.d/msprod.repo
packages-microsoft-prod-1.0-1.el7.noarch
file /etc/yum.repos.d/msprod.repo is not owned by any package

[user-name@host-name ~]$ sudo cat /etc/yum.repos.d/microsoft-prod.repo
[packages-microsoft-com-prod]
name=packages-microsoft-com-prod
baseurl=https://packages.microsoft.com/rhel/7/prod/
enabled=1
gpgcheck=1
gpgkey=https://packages.microsoft.com/keys/microsoft.asc

[user-name@host-name ~]$ sudo cat /etc/yum.repos.d/msprod.repo
[packages-microsoft-com-prod]
name=packages-microsoft-com-prod
baseurl=https://packages.microsoft.com/rhel/7/prod/
enabled=1
gpgcheck=1
gpgkey=https://packages.microsoft.com/keys/microsoft.asc
rhel yum
  • 1 个回答
  • 1216 Views
Martin Hope
CodeMed
Asked: 2019-05-07 12:37:52 +0800 CST

将所有非根路由重定向到 Amazon Linux 2 和 Apache 上的 index.html

  • 0

Amazon Linux 2 实例正在使用 Apache 托管 Angular 7 应用程序。Angular 7 应用程序不仅包括index.html,还包括几个.js文件和一个名为assets.

我需要使用什么特定语法来确保所有非指定路由对 Apache 的请求都被重定向到index.html位于DocumentRoot? 请注意,所需的语法还需要允许在加载客户端浏览器时.js将目录的所有文件和内容assets作为辅助请求index.html。

例如,如果远程 Web 浏览器请求mydomain.com/randomCharacters,我希望 Apache 以index.html与 Apache 响应对mydomain.comwith的请求相同的方式返回index.html。然后index.html必须能够访问.js文件和assets子目录的内容。

(在这种情况下,DocumentRoot是一个名为 的目录/var/www/mydomain.com/public_html。此外,该/var/www/mydomain.com/public_html目录包括 1. index.html、2. 几个.js文件和 3.assets包含图像等内容的子目录。)

我想在块RedirectMatch内部使用VirtualHost以保持配置尽可能干净。这是我的想法。下面需要怎么修改?

<VirtualHost *:80>
    ServerName www.mydomain.com
    ServerAlias mydomain.com
    DocumentRoot /var/www/mydomain.com/public_html
    ErrorLog /var/www/mydomain.com/error.log
    CustomLog /var/www/mydomain.com/requests.log combined
    RedirectMatch 302 ^/(?!index.html$).+ http://mydomain.com  
</VirtualHost>


结果的取证分析:

当在 Firefox 的开发人员工具中打开网络选项卡尝试上述操作时,我向http://mydomain.comwhile发出请求,结果RedirectMatch 302 ^/(?!index.html$).+ http://mydomain.com是VirtualHost所有请求/都显示已给出304响应,而对命名文件(如脚本)的所有请求并且样式表显示已给出302响应。

此外,当我查看html同一请求的页面源时,我看到index.html确实正确地提供了 的内容,但浏览器仍然为空,因为其中的代码index.html无法访问.js文件或assets子目录的内容。

所以问题是RedirectMatch 302 ^/(?!index.html$).+ http://mydomain.com需要重写以允许.js文件和assets子目录的内容。 需要什么特定的语法来解决这个问题,以便 Apache 可以成功地为 Angular 7 应用程序提供服务,无论在http://mydomain.com之后添加什么字符串?

apache-httpd webserver
  • 1 个回答
  • 650 Views
Martin Hope
CodeMed
Asked: 2018-08-11 16:37:22 +0800 CST

grep 的 IP 范围?

  • 2

在本地 IP 地址为 10.0.0.159 的 RHEL 7 机器上,以下命令打印出 IP 10.0.0.159:

$ echo "$(ifconfig eth0 | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | \
   grep -Eo '([0-9]*\.){3}[0-9]*' | grep -v '127.0.0.1')""(rw,sync)" 

为了打印出“10.0.0.0/8”,命令必须更改为什么?

grep terminal
  • 2 个回答
  • 4013 Views
Martin Hope
CodeMed
Asked: 2018-04-17 15:30:48 +0800 CST

删除 bash 中命令引用的损坏

  • 0

如何在 bash 中清除命令引用?

在 CentOS 7 服务器上,我正在安装 Docker 和 Docker Machine。安装需要手动重新设置 BIOS 选项,然后在安装过程中重新启动操作系统。一开始,这个docker-machine命令是被bash找到的。但似乎一些 bash 的引用在重新启动期间被破坏了。结果,即使我重复运行下面的安装命令,以下用于安装 Docker Machine 和检查其版本的命令现在也会导致失败消息。

我正在按照此链接上设置 Docker Machine 的说明进行操作。

这是最终重启后的终端输出:

[root@localhost ~]# base=https://github.com/docker/machine/releases/download/v0.14.0 &&  
>   curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/tmp/docker-machine &&  
>   sudo install /tmp/docker-machine /usr/local/bin/docker-machine
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current  
                                 Dload  Upload   Total   Spent    Left  Speed  
100   617    0   617    0     0    836      0 --:--:-- --:--:-- --:--:--   836
100 26.7M  100 26.7M    0     0  3481k      0  0:00:07  0:00:07 --:--:-- 5962k
[root@localhost ~]# docker-machine version
-bash: docker-machine: command not found
[root@localhost ~]#

是否有一些命令可以用来清理 bash 的所有引用,以便全新安装可以引发有意义的错误,或者希望能够正常工作?或者是否有人可以建议一些诊断命令?

我希望有一个更优雅的解决方案,而不是重新安装主机操作系统并从头开始重新配置机器中的所有内容。


用户建议:

根据@MichaelHomer 的建议,我尝试了以下方法:

[root@localhost ~]# PATH=/usr/local/bin:$PATH
[root@localhost ~]#

根据@roaima 的建议,我尝试了:

[root@localhost ~]# hash -r
[root@localhost ~]# ls -ld /usr/local/bin/docker-machine
-rwxr-xr-x. 1 root root 28034848 Apr 16 16:18 /usr/local/bin/docker-machine
[root@localhost ~]# echo "$PATH"
/usr/local/bin:/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.151-1.b12.el7_4.x86_64/bin:/root/bin
[root@localhost ~]#

根据@arcsin 的建议,我输入:

[root@localhost ~]# file /usr/local/bin/docker-machine
/usr/local/bin/docker-machine: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, stripped
[root@localhost ~]# /usr/local/bin/docker-machine version
docker-machine version 0.14.0, build 89b8332
[root@localhost ~]#
bash centos
  • 1 个回答
  • 67 Views
Martin Hope
CodeMed
Asked: 2018-04-04 14:12:14 +0800 CST

在最后一个空格之后切片字符串中的最后 n 个字符

  • 0

由 . 返回一个字符串myString=$(some_command)。

的结果值myString如下所示:

there are spaces in this line.  

bash可以键入什么特定命令来仅提取n结果值中最后一个空格之后的最后几个字符myString?

对于myString上面显示的示例值,我想提取 5 个字符line.

但是,对于myString像“这条线有很多空格”这样的不同值,所需的切片输出将是spaces.

bash string
  • 1 个回答
  • 260 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve