如何解决如何通过带有Plink的SSH隧道发送多个命令,包括SQL查询?
我正在尝试从Python脚本创建一个批处理文件,该脚本执行Plink以通过SSH将SQL查询发送到外部数据库。该脚本必须激活带有多个命令行的批处理文件才能发送到服务器。 在互联网上研究发现,一种类似于下面的代码的解决方案应该可以解决问题。
(
echo command 1
echo command 2
...
) | plink.exe user@hostname -i sshkey.ppk
输入我的命令将产生以下结果:
(
echo mysql -u admin -pPassword Database
echo INSERT INTO Table VALUES(DEFAULT,(SELECT ID FROM Another_Table WHERE Another_ID = 'foo'),'bar','foobar','date',1);
) | plink.exe user@hostname -i sshkey.ppk
我遇到的问题是,我收到以下错误:目前无法对'bar'进行语法处理。 (对不起,如果此处的翻译不正确,英语不是我的母语)。 我检查了是否必须转义某些特殊字符,但未找到任何确定性的答案。请注意,第一个命令是正确的,并且可以按预期工作。仅第二条命令似乎有故障。有人愿意为我提供解决方案吗?
解决方法
因此,这里的答案是,您不仅需要转义右括号TWICE,而且必须转义三个“ ^”字符。这是因为括号内的命令被解析了两次,第二个“ ^”需要转义才能进行第一次解析,因此需要第三个字符。
有关详细信息,请参见此处:Escaping parentheses within parentheses for batch file
代码因此如下所示:
(
echo mysql -u admin -pPassword Database
echo INSERT INTO Table VALUES(DEFAULT,(SELECT ID FROM Another_Table WHERE Another_ID = 'foo'^^^),'bar','foobar','date',1^^^);
) | plink.exe user@hostname -i sshkey.ppk
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。