如何将命令作为参数传递给 ssh [重复]

2024-05-13

我的需要是让这个命令起作用:

sshpass -p XXXX ssh -oStrictHostKeyChecking=no [email protected] /cdn-cgi/l/email-protection sudo docker exec -u postgres postgres-container /bin/bash -c \" psql -d crawl-configuration -c 'select * from schema_version'\"

但结果表明 * 已被 shell 扩展,并且所有匹配的文件都作为参数传递给 psql 命令。于是我就搜索如何保护命令不被扩展,但没有成功。

我的实验给了我以下结果。

A - 以下命令有效,TOTO 显示在我的 shell 上

sshpass -p XXXX ssh -oStrictHostKeyChecking=no [email protected] /cdn-cgi/l/email-protection sudo docker exec -u postgres postgres-container /bin/bash -c \"echo TOTO\"

B - 以下命令不起作用,我的 shell 上显示一个空行

sshpass -p XXXX ssh -oStrictHostKeyChecking=no [email protected] /cdn-cgi/l/email-protection sudo docker exec -u postgres postgres-container /bin/bash -c "echo TOTO"

C - 这有效,显示 ls 的结果。我不明白为什么它有效但案例 B 不起作用?

sshpass -p XXXX ssh -oStrictHostKeyChecking=no [email protected] /cdn-cgi/l/email-protection sudo docker exec -u postgres postgres-container /bin/bash -c "ls"

D - 这有效,我得到了预期的结果

sshpass -p XXXX ssh -oStrictHostKeyChecking=no [email protected] /cdn-cgi/l/email-protection sudo docker exec -u postgres postgres-container /bin/bash -c \" psql -d crawl-configuration -c \'select version from schema_version\' \"

E - 在主机上执行此命令而不通过 ssh 有效

sudo docker exec -u postgres postgres-container /bin/bash -c " psql -d crawl-configuration -c 'select * from schema_version'"

使我的第一个命令起作用的解决方案是什么?


我想说的是:

sshpass -p XXXX ssh -oStrictHostKeyChecking=no [email protected] /cdn-cgi/l/email-protection \
  "sudo docker exec -u postgres postgres-container \
  /bin/bash -c \"psql -d crawl-configuration -c 'select * from schema_version'\""

将 ssh 执行的整个命令用双引号括起来,然后在命令内转义双引号。

或者,使用此处文档:

sshpass -p XXXX ssh -T -oStrictHostKeyChecking=no [email protected] /cdn-cgi/l/email-protection <<-'EOF'
    sudo docker exec -u postgres postgres-container \
    /bin/bash -c "psql -d crawl-configuration -c 'select * from schema_version'"
EOF

由于已引用,因此无需引用'EOF'分隔符。这-T禁用伪终端的分配。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将命令作为参数传递给 ssh [重复] 的相关文章

  • 如何在 Bash 中删除字符串的第一部分?

    该代码将给出第一部分 但是如何删除它并获取没有第一部分的整个字符串 echo first second third etc cut d f1 你应该看看info cut 这将解释什么f1 means 实际上我们只需要第二个字段之后的字段 f
  • tcsh 脚本 if 语句

    我需要循环遍历一堆不同的场景 变量场景 但无法弄清楚如何在 tcsh shell 脚本中使用 if 语句 收到错误 if 表达式语法 有人可以告诉我我有什么问题吗 简化代码如下 谢谢 bin tcsh f set val 0 foreach
  • 打印本周星期一的日期(在 bash 中)

    我想获取本周星期一的 YYYYMMdd 格式的日期 例如 今天是 20110627 从明天到周日 我仍然想打印周一 今天 的日期 然后下周重复这个过程 monday date dmonday Y m d last monday date d
  • 无法连接到 Azure Ubuntu VM - 公钥被拒绝

    我们在 Azure 上使用 Ubuntu VM 一段时间了 很少遇到任何问题 然而 其中一台虚拟机最近出现了问题 出乎意料的是 Ubuntu VM 开始拒绝公钥 ssh i azure key email protected cdn cgi
  • 无法从 bash 脚本使用 nvm

    我正在尝试编写一个 shell 脚本来自动设置我的开发环境 安装 python nvm node mongo 等 我正在使用 nvm 来安装 Node js 它告诉您关闭并重新打开终端以开始使用 nmv 命令 我尝试获取 bashrc 和
  • Android SSH 示例代码

    我想创建一个 android 活动 用于与远程设备 通过 Wifi 建立 SSH 会话并在远程设备上执行一些 Linux 命令 任何人都可以获得一个快速 简短的示例 用于使用以下命令进行连接 身份验证和发送远程命令Trilead https
  • 通过 Node.js 运行 bash 脚本 - 非法选项 -o pipelinefail

    我正在尝试使用 Node js 执行 bash 脚本child process exec 然而它在文件的第二行爆炸 usr bin env bash set eo pipefail TRACE set x echo we are here
  • 是否可以从应用程序执行 ADB shell 命令?

    我有一个安卓电脑 http www timingpower com rk3288 with root 开箱即用 连接到始终以横向显示的外部显示器 HDMI 和 USB 即使我的应用程序在清单中的活动声明中指定纵向 android scree
  • 如何运行 bash 压缩脚本?

    有没有一种方法可以直接运行带有 参数 的压缩bash脚本 而无需将其解压缩到文件中 然后运行解压缩的文件 例如 我需要使用一些给定的参数执行 setup mysql gzip 压缩脚本 n wordpress locahost 而不先解压缩
  • HBase Shell 日志记录

    使用 HBase shell 时 我收到大量日志记录 包括 INFO 和 DEBUG 消息 虽然这对于学习 HBase 内部结构来说很有趣 但它非常冗长并且可能会掩盖输出 我尝试过以多种不同的方式更改日志记录级别 包括所描述的here ht
  • Bash 目录上的 For 循环

    快速背景 ls src file1 file2 dir1 dir2 dir3 Script bin bash for i in src do if d i then echo i fi done Output src dir1 src di
  • 从文件中随机采样行

    我有一个大约 40gb 和 1800000 行的 csv 文件 我想随机采样 10 000 行并将它们打印到一个新文件中 现在 我的方法是将 sed 用作 sed n vars lt input txt gt output txt Wher
  • 如何隐藏显示终端命令输出

    当我运行这个命令时 sudo htpasswd b home reynolds htpasswd admin admin 我正在得到输出Updating password for user admin在终端中 但我不想显示该输出 所以我在谷
  • Shell 执行:时间与 /usr/bin/time

    当 bash zsh 执行以下操作时会发生什么 usr bin time l sleep 1 1 00 real 0 00 user 0 00 sys 516096 maximum resident set size 0 average s
  • LaunchAgent 不运行 shell 脚本

    在 Catalina 之前的 macOS 下 我有一个每天运行 shell 脚本的 LaunchAgent 升级并切换到 zsh 后 它不起作用 我检查过的事情 shebang 切换到 zsh shell脚本可以从命令行手动执行 sh 在系
  • 需要 sudo 密码的 Bash 脚本

    我正在创建一个 Bash 安装程序脚本 它为 OSX 和 Linux 编译并安装一些库 因为我的脚本中的某些命令 make install apt get install port install 等 需要 sudo 所以我需要用户提供密码
  • 如何从 Linux 命令行确定 LCD 显示器是否打开

    如何通过 Linux 命令行判断计算机的显示器是否打开 关闭 我传统上认为显示器是仅输出的设备 但我注意到 Gnome 显示器首选项对话框具有 检测显示器 功能 这可以推广到确定显示器是否物理关闭吗 VESA DDC 连接是I2C http
  • 如何使用 jq 和 Bash 将 JSON 展平为 Key=Selector 的 Bash 关联数组?

    作为后续展平任意 JSON https stackoverflow com questions 42299905 using jq flatten arbitrary json to delimiter separated flat dic
  • 使用 JSch 分别为各个提示提供输入

    问题是 SSH 连接需要在常规登录后提供另一个用户 ID 和密码信息 我正在使用 JSch 连接到远程服务器 它接受以下形式的输入InputStream 和这个InputStream只能通过一次 由于会话是交互式的 这会导致问题 我尝试将输
  • 通过 SSH 的 sbt (Scala) 结果找不到命令,但如果我自己这样做就可以工作

    所以我正在尝试做一些涉及跑步的事情sbt通过 SSH 命令 这就是我正在尝试的 ssh my username

随机推荐