所以,我想在终端中运行此命令
pssh -h hosts -i "echo "DenyUsers $1" >> /etc/ssh/sshd_config && service sshd config"
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,"在回声词被打破"之前它将在DenyUsers $1命令之前结束.我已经"在echo之前和配置单词之后改变了它并不像我想要的那样工作.
我是这个脚本的新手,我不知道我应该在搜索引擎中放入哪些关键字:-)
即使您不信任您的输入,以安全的方式执行此操作也会涉及更多.
使用printf %q生成eval数据的-safe版本:
#!/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"
Run Code Online (Sandbox Code Playgroud)
请注意,printf使用的是代替echo更高的可预测性; 请参阅POSIX规范echo的"应用程序使用"部分.
| 归档时间: |
|
| 查看次数: |
120 次 |
| 最近记录: |