当我偶然发现一个我想阻止公司访问的邪恶网站时,我在绑定服务器上编辑了named.conf文件,然后更新了代理服务器黑名单文件。我想用一个bash脚本来自动化它。假设我的脚本称为“
evil-site-block.sh”,其中包含以下内容:
ssh root@192.168.0.1 'echo "#date added $(date +%m/%d/%Y)" >> /var/named/chroot/etc/named.conf; echo "zone \"$1\" { type master; file \"/etc/zone/dummy-block\"; };" >> /var/named/chroot/etc/named.conf'
然后以
$ evil-site-block.sh google.com
当我在远程计算机上查看named.conf的内容时,我看到:
#date added 09/16/2014
zone "" { type master; file "/etc/zone/dummy-block"; };
我不知道如何将“ google.com”作为$ 1传递。
您的问题:整个命令都用单引号引起来-显然是bash表达式在服务器上而不是在本地扩展。
但这也适用于您$1
。
简单的解决方案:通过将局部变量包装在单引号中来“报价”报价。
ssh root@192.168.0.1 'echo "#date added $(date +%m/%d/%Y)" >> /var/named/chroot/etc/named.conf; echo "zone \"'$1'\" { type master; file \"/etc/zone/dummy-block\"; };" >> /var/named/chroot/etc/named.conf'
注意:\"$1\"
→ \"'$1'\"
。
注意:此解决方案是上面问题中发布的单衬套的简单修复。如果这个脚本有可能被其他人执行,或者它可以处理任何形式的外部输出
问题内容: 是否有任何聪明的方法可以通过ssh在远程主机上运行本地Bash功能? 例如: 是的,我知道这行不通,但是有办法实现吗? 问题答案: 您可以使用该命令通过来使功能在远程计算机上可用。有多个选项,具体取决于您要如何运行远程脚本。 要在远程主机上使用该功能: 更好的是,为什么还要麻烦管道: 或者,您可以使用HEREDOC: 如果要发送脚本中定义的所有函数,而不仅仅是发送,请像这样使用: 说明
问题内容: 我刚开始学习groovy,我想将svnSourcePath和svnDestPath传递给svn copy命令中的shell脚本。但是网址未呈现。 输出量 问题答案: 在变量周围添加了单引号和加operator(’+ variable +’)。现在正在工作
问题内容: 我从Jenkins触发了一个shell脚本,该脚本获取日期并将其导出为环境(Linux)变量$ DATE。我需要在同一詹金斯工作中使用此$ DATE。我做了工作作为参数构建。创建一个字符串参数作为DATE值,如DATE = $ DATE。但这是行不通的。 请建议! 问题答案: 您提到要在外壳程序脚本中导出环境变量,该脚本可能是通过“执行外壳程序”步骤启动的。 问题是,一旦完成外壳程序步
问题内容: 我在通过SSH将响应传递到远程服务器上的bash脚本时遇到问题。 我正在用Python 3.6.5编写程序,该程序将SSH到远程Linux服务器。在此远程Linux服务器上,有一个正在运行的bash脚本,需要用户输入才能填充。无论出于何种原因,我都无法通过SSH从原始python程序传递用户输入,而无法填写bash脚本用户输入的问题。 main.py SSH.py 类中的最后一个是启动
问题内容: 我是docker世界的新手。我必须调用一个通过Docker容器获取命令行参数的shell脚本。例如:我的shell脚本如下所示: Dockerfile看起来像这样: 我不确定如何在运行容器时传递参数 问题答案: 使用相同 使用现有的Dockerfile构建映像: 使用参数或其他方式运行映像。
我有这样一个shell脚本(在/usr/local/bin/esm script/import master.php中): 现在我通过这样的PHP脚本调用它: 但是,当我运行PHP代码时,我会在浏览器上看到以下消息: 我不是一个编写shell脚本的人,所以我不知道我是否遗漏了什么。 我检查了带有sql文件的文件夹是否具有正确的权限(775)和数据(插入语句)。 那么为什么这不起作用呢?非常感谢您的