bash 相关问题

有关为Bash命令shell编写的脚本的问题。对于有错误的shell脚本,请在发布此处之前使用shellcheck程序(或在https://shellcheck.net上的Web shellcheck服务器中)进行检查。关于交互式使用Bash的问题更可能是超级用户的主题,而不是Stack Overflow。

С在 bash 脚本中使用 jq 实用程序创建多级 json

我将文本文件的内容获取到数组中,然后依次获取数组的元素并尝试将元素添加到json中: #!/bin/bash JSON=$(jq -n '') readarray -t 数组 < ./

回答 1 投票 0

for j in os.system("ls *.out") 不迭代。根据扩展名更改文件名

我正在尝试编写一个脚本,该脚本将帮助我多次运行模型,更改输入文件的一个值的输入。模型覆盖了输出文件,所以我需要重命名输出......

回答 1 投票 0

从 plutil 获取信息

我无法从 plutil 获取信息。 我想检查 .plist 是否包含键 CFBundleShortVersionString。 我不认为 plutil 有任何选项来测试密钥是否存在,所以我想我

回答 6 投票 0

如何包含具有相对路径的bash脚本? [重复]

我有3个脚本: 脚本A: 回声“嘿你!” 脚本B: 来源./A.sh 脚本C: 源./libs/B.sh 因此文件夹“libs”中的脚本 A 和 B 以及脚本 C 使用此目录中的脚本 B。 脚本 C ...

回答 1 投票 0

一行打印文件内容

我完全迷失了尝试做一些我认为非常简单的事情:逐行读取文件并将所有内容输出在一行上。 我在 RHEL 上使用 bash。 考虑一个简单的测试...

回答 4 投票 0

使用 FFmpeg 混合同名音频和视频文件的脚本

我有一个文件夹,其中包含名为 file001.wav 和 file001.mp4 的音频和视频文件,我希望它们能够自动混合。我找到了一个 Windows 脚本,但不知道如何更改...

回答 2 投票 0

如何使用 bash 脚本使用私钥在 ssh 后创建到远程计算机的隧道

我有一个服务器,我将从本地计算机登录到服务器并创建隧道。 我有一个 bash 脚本,它没有创建隧道 sshpass -p ${1} ssh ${2}@${3} ssh -L 我有一个服务器,我将从本地计算机登录到服务器并创建一个隧道。 我有一个 bash 脚本,它没有创建隧道 sshpass -p ${1} ssh ${2}@${3} ssh -L <port1>:<host>:80 -i /home/<user>/private_key <user_ID>@<host2> 我得到的结果 - sh ssh_to_box.sh pwd username remotehost Welcome to Ubuntu 16.04.5 LTS (GNU/Linux 4.4.0-145-generic x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage 144 packages can be updated. 0 updates are security updates. New release '18.04.2 LTS' available. Run 'do-release-upgrade' to upgrade to it. *** System restart required *** Last login: Thu May 30 09:36:36 2019 from remotehost $ 脚本没有进行隧道传输。 它还应该做 $bash 如何通过 ssh 到远程并从该远程计算机创建隧道并保持隧道处于活动状态? 可能您实际上正在创建隧道,您应该检查是否 ss -lptn | awk '{ print $4 }' | awk -F ':' '{ print $2 }' | sed -e '/<port1>/!d' 当 ssh 控制台打开时返回一些内容,如果 true 你有一个隧道。 (可能有更好的方法来进行此检查,但我不太了解 awk) 如果您希望隧道持久存在,可以在 tmux/screen 中执行它或运行 nohup <tunnel_command> & 需要注意的是,名称也将由远程主机解析。 问题已解决: sshpass -p ${1} ssh -t ${2}@${3} 'ssh -L '${4}':'${5}':'${6}' -i /home/<Path>_key '${2}'@'${7}''

回答 2 投票 0

如何在 bash 中重定向到标准输入,但每行之间有延迟?

我使用的平台是Ubuntu 18.04。我有一个二进制程序(所以我无法更改程序),比如 foo ,它从标准输入中逐行读取命令。我的命令位于名为“comma...

回答 1 投票 0

如何在捕获 stdout 输出的同时修改 bash 函数中的全局变量并返回有效的返回码?

在 bash 编程中,我当前面临一个问题,我不仅想修改 bash 函数中的全局变量,还想通过 return 和 $? 返回正确的返回代码?以及成为...

回答 2 投票 0

Linux 脚本解析 telnet 消息并退出

我正在连接到 telnet 侦听器。 Telnet 服务器每秒发送“1234”。我想读取消息“1234”并关闭 telnet 会话。下面是我的代码,但它不起作用。 #!/bi...

回答 5 投票 0

使用 <title> 标签重命名 HTML 文件

我是一个编程新手。 我有一个文件夹,其中包含子文件夹,其中包含数千个 html 文件,这些文件的通用名称为 1006.htm、1007.htm,我想将其重命名...

回答 4 投票 0

如何在现有 CSV 文件的单个单元格中附加一些静态内容

假设我需要在包含客户详细信息的现有 CSV 文件的第一个单元格(不是逐行)中附加以下内容,我该如何实现, 待补充内容: &quo...

回答 2 投票 0

如何在 bash shell 中将日期转换为时间戳?

我需要编写一个脚本来检查我的一个日志文件以检查其上次更新时间。如果超过 90 分钟,我需要收到提醒。但现在我陷入了时间戳转换。 我有...

回答 1 投票 0

使用 sed 删除两个数组中的差异(更新 ssh 密钥)

我的目标是自动更新authorized_keys 文件中的ssh 密钥。由于限制,我无法使用 ansible,这会简单得多。 脚步: 从文件中读取密钥

回答 1 投票 0

如何知道SSH密钥的长度和类型?

如何知道SSH密钥的长度和类型? 如果可能的话,如何将它们放入变量中以便稍后调用?

回答 2 投票 0

Wget 将 cookies 保存到 bash 环境变量

我知道你可以使用 wget 将 cookie 保存到文件中 wget --save-cookies my-file.txt https://stackoverflow.com 有没有办法将 --save-cookies 直接通过管道传输到 bash 环境变量?

回答 2 投票 0

如何删除所有匹配的行以及每行后面的一行?

我有一个大文件和我的特定字符串的列表。输出不应包含我的特定行以及每一行之后的一行。例如, 具体线路: '格格' 'SS' 输入: '格格' ‘123’ ...

回答 1 投票 0

如何在bash中使用REST API删除Azure存储队列上的消息?

我想知道如何删除Azure存储队列上的消息。目前我不断收到以下错误。 我想知道如何删除Azure存储队列上的消息。目前我不断收到以下错误。 <?xml version="1.0" encoding="utf-8"?><Error><Code>AuthenticationFailed</Code><Message>Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature. RequestId:47de86b5-3003-004d-0fc0-dd56e6000000 Time:2024-07-24T11:56:26.1466778Z</Message><AuthenticationErrorDetail>The MAC signature found in the HTTP request '<signature>' is not the same as any computed signature. Server used following string to sign: 'DELETE x-ms-date:Wed, 24 Jul 2024 11:56:25 GMT x-ms-version:2016-05-31 /gildedhonordev/ghmatchedtickets/messages/<messageid>'.</AuthenticationErrorDetail></Error> 使用此页面作为指导,我创建了一个成功获取排队消息的函数。然而,当我想删除一条消息时,同样的方法在授权时总是失败。 以下是我的代码: get_queued_message() { DATE_ISO=$(TZ=GMT date "+%a, %d %h %Y %H:%M:%S %Z") VERSION="2016-05-31" HEADER_RESOURCE="x-ms-date:$DATE_ISO\nx-ms-version:$VERSION" URL_RESOURCE="/$STORAGE_ACC/$QUEUE_NAME/messages" STRING_TO_SIGN="GET\n\n\n\n\n\n\n\n\n\n\n\n$HEADER_RESOURCE\n$URL_RESOURCE" DECODED_KEY="$(echo -n "$STORAGE_KEY" | base64 -d -w0 | xxd -p -c256)" SIGN=$(printf "$STRING_TO_SIGN" | openssl dgst -sha256 -mac HMAC -macopt "hexkey:$DECODED_KEY" -binary | base64 -w0) RET=$(curl -X GET \ -H "x-ms-date:$DATE_ISO" \ -H "x-ms-version:$VERSION" \ -H "Authorization: SharedKey $STORAGE_ACC:$SIGN" \ -H "Content-Length:0" \ "https://$STORAGE_ACC.queue.core.windows.net/$QUEUE_NAME/messages") MESSAGE=$(echo "$RET" | grep -oP '<MessageText>\K[^<]+') MESSAGE_ID=$(echo "$RET" | grep -oP '<MessageId>\K[^<]+') POP_RECEIPT=$(echo "$RET" | grep -oP '<PopReceipt>\K[^<]+') } delete_queued_message() { DATE_ISO=$(TZ=GMT date "+%a, %d %h %Y %H:%M:%S %Z") VERSION="2016-05-31" HEADER_RESOURCE="x-ms-date:$DATE_ISO\nx-ms-version:$VERSION" URL_RESOURCE="/$STORAGE_ACC/$QUEUE_NAME/messages/$MESSAGE_ID?popreceipt=$POP_RECEIPT" STRING_TO_SIGN="DELETE\n\n\n\n\n\n\n\n\n\n\n\n$HEADER_RESOURCE\n$URL_RESOURCE" DECODED_KEY="$(echo -n "$STORAGE_KEY" | base64 -d -w0 | xxd -p -c256)" SIGN=$(printf "$STRING_TO_SIGN" | openssl dgst -sha256 -mac HMAC -macopt "hexkey:$DECODED_KEY" -binary | base64 -w0) curl -X DELETE \ -H "x-ms-date:$DATE_ISO" \ -H "x-ms-version:$VERSION" \ -H "Authorization: SharedKey $STORAGE_ACC:$SIGN" \ "https://$STORAGE_ACC.queue.core.windows.net/$QUEUE_NAME/messages/$MESSAGE_ID?popreceipt=$POP_RECEIPT" } 如有任何帮助,我们将不胜感激 如何在 bash 中使用 REST API 删除 Azure 存储队列上的消息? 您可以使用以下脚本来使用 Bash Delete Azure Storage Queue message。 脚本: #!/bin/bash # Function to convert base64 to hex base64_to_hex() { echo -n "$1" | base64 --decode | od -An -tx1 | tr -d ' \n' } # Function to delete the queued message delete_queued_message() { STORAGE_ACC=$1 STORAGE_KEY=$2 QUEUE_NAME=$3 MESSAGE_ID=$4 POP_RECEIPT=$5 DATE_ISO=$(TZ=GMT date "+%a, %d %h %Y %H:%M:%S %Z") VERSION="2020-04-08" HEADER_RESOURCE="x-ms-date:$DATE_ISO\nx-ms-version:$VERSION" CANONICALIZED_RESOURCE="/$STORAGE_ACC/$QUEUE_NAME/messages/$MESSAGE_ID\npopreceipt:$POP_RECEIPT" STRING_TO_SIGN="DELETE\n\n\n\n\n\n\n\n\n\n\n\n$HEADER_RESOURCE\n$CANONICALIZED_RESOURCE" DECODED_KEY=$(base64_to_hex "$STORAGE_KEY") SIGN=$(printf "$STRING_TO_SIGN" | openssl dgst -sha256 -mac HMAC -macopt "hexkey:$DECODED_KEY" -binary | base64) curl -X DELETE \ -H "x-ms-date:$DATE_ISO" \ -H "x-ms-version:$VERSION" \ -H "Authorization: SharedKey $STORAGE_ACC:$SIGN" \ "https://$STORAGE_ACC.queue.core.windows.net/$QUEUE_NAME/messages/$MESSAGE_ID?popreceipt=$POP_RECEIPT" } STORAGE_ACC="venkat326123" STORAGE_KEY="T3czZpu1gZzzzzzzztD9nyWw==" QUEUE_NAME="queue1" MESSAGE_ID="aeacazzzzzf6914a" POP_RECEIPT="AgAzzzAAAA09p8nc3d2gE=" delete_queued_message $STORAGE_ACC $STORAGE_KEY $QUEUE_NAME $MESSAGE_ID $POP_RECEIPT 上面的脚本在我的环境中执行并删除了 azure 队列消息。 传送门: 参考: 删除消息(REST API)- Azure 存储 |微软学习

回答 1 投票 0

Hadoop 任意截断 256,512,1024 个字符的字符串

这是我的第一篇文章,对于任何混乱表示歉意。我正在尝试通过 MapReduce 运行 DNA 序列分析。以下是我的 mapper.sh 脚本的重要部分: 读取行时 做 ...

回答 1 投票 0

(标准输入)用 grep -iHn "ERROR" 显示而不是文件名,第二个 grep -vH "filter" 显示(标准输入),不再是文件名

我尝试做的事情: 查找当天的所有日志文件 然后在文件中 grep "ERROR" 然后 grep -v "Not this line contains the filter" 作为第一个 grep 逗号结果中的过滤器...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.