我正在尝试通过 ssh 在一系列服务器上运行命令。我最近更改了 ssh 端口以避免互联网扫描仪,但这破坏了我的脚本。有谁知道在 for 循环中为每个 user@server 条目指定不同端口的“简单方法”?
for i in 'user1@server1.domain1.com -p 12345' 'user2@server2.domain2.com -p 54321'
do printf "\e[%sm%s\e[00m\n" 32 $i
ssh $i crontab -l
done
Run Code Online (Sandbox Code Playgroud)
第二行只是在输出之前打印服务器名称(为了可读性)。
它给我的不是幸福,而是:ssh: Could not resolve hostname server1.domain1.com -p 12345: Name or service not known
以前,当所有端口都是默认的 22 并且不需要指定时,它就可以工作。
是否可以转换这个json:
[
{
"bytes": 276697,
"checked": false
},
{
"bytes": 276697,
"checked": false
}
]
Run Code Online (Sandbox Code Playgroud)
到 jq 中带有标题的表?
我试过了:
cat file.json | jq '.[] | join(",")'
Run Code Online (Sandbox Code Playgroud)
但它省略了标题:
"276697,false"
"276697,false"
Run Code Online (Sandbox Code Playgroud)
它应该是:
"bytes,checked"
"276697,false"
"276697,false"
Run Code Online (Sandbox Code Playgroud)
我希望您只需运行两个命令:
"276697,false"
"276697,false"
Run Code Online (Sandbox Code Playgroud)
但第二个失败了:
"bytes,checked"
jq: error (at <stdin>:64): Cannot iterate over null (null)
Run Code Online (Sandbox Code Playgroud)
理想情况下它会比这更简单。
我正在尝试使用程序通过管道传输带有特殊字符的字符串(例如HG@eg3,l'{TT\"C!
到另一个命令(termux-clipboard-set)read
。似乎read
旨在创建一个临时变量(例如read temp
),然后将其传递给另一个命令(例如termux-clipboard-set $temp
)。
我想知道是否有更快的方法来使用管道来做到这一点,例如:read | termux-clipboard-set
?
更新:抱歉,我忘了提及我正在寻找可以在 bash (termux) 上运行的东西。