> /etc/ssh/sshd_config && service sshd config-6ren">
gpt4 book ai didi

linux - 将带引号的字符串传递给 ssh

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:17:33 25 4
gpt4 key购买 nike

所以,我想在终端中运行这个命令

pssh -h hosts -i "echo "DenyUsers $1" >> /etc/ssh/sshd_config && service sshd config"

如您所见," before echo words 将被破坏,它将被 " before DenyUsers $1 命令结束。我已经在 echo 之前和配置字之后更改了 ",但它仍然不能像我想要的那样工作。

我是这个脚本的新手,我不知道我应该在搜索引擎中输入什么关键字:-)

最佳答案

以安全的方式执行此操作即使您不相信您的输入也会涉及更多。

使用 printf %q 生成数据的 eval 安全版本:

#!/usr/bin/env bash
# ^^^^- Requires an extension not available in /bin/sh

# printf %q is also available on ksh, but there you would write:
# echo_str=$(printf 'DenyUsers %q' "$1")
# cmd=$(printf '%q ' printf '%s\n' "$echo_str")
# as the ksh version doesn't have -v, but optimizes away the subshell instead.

printf -v echo_str 'DenyUsers %q' "$1"
printf -v cmd '%q ' printf '%s\n' "$echo_str"
pssh -h hosts -i "$cmd >> /etc/ssh/sshd_config && service sshd config"

请注意,使用 printf 而不是 echo 以获得更好的可预测性;请参阅 POSIX specification for echo 的应用程序使用部分.

关于linux - 将带引号的字符串传递给 ssh,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48523268/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com