小编Dan*_*nik的帖子

对于具有自定义端口的服务器循环(for i in "user1@server1 -p 12345" "user2@server2 -p 54321" ...; do)

我正在尝试通过 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 并且不需要指定时,它就可以工作。

shell ssh

7
推荐指数
3
解决办法
1899
查看次数

将 json 转换为 csv,并在 jq 中标头

是否可以转换这个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)

理想情况下它会比更简单。

csv conversion json csv-simple jq

2
推荐指数
1
解决办法
1410
查看次数

管道读取命令?

我正在尝试使用程序通过管道传输带有特殊字符的字符串(例如HG@eg3,l'{TT\"C!到另一个命令(termux-clipboard-setread。似乎read旨在创建一个临时变量(例如read temp),然后将其传递给另一个命令(例如termux-clipboard-set $temp)。

我想知道是否有更快的方法来使用管道来做到这一点,例如:read | termux-clipboard-set

更新:抱歉,我忘了提及我正在寻找可以在 bash (termux) 上运行的东西。

bash read

2
推荐指数
1
解决办法
592
查看次数

标签 统计

bash ×1

conversion ×1

csv ×1

csv-simple ×1

jq ×1

json ×1

read ×1

shell ×1

ssh ×1