【发布时间】:2020-12-02 03:16:08
【问题描述】:
我正在尝试使用 sshpass 接收查询结果,示例如下:
sshpass -p password ssh user@ip "mysql -u user -pdbpassword -h ip -P port database -e \"SELECT * FROM database.ViewName;\""
当我从本地机器启动该命令时,它可以工作。
但是当我在我的 Python 脚本上做时,它没有:
import subprocess
import sys
from subprocess import check_output
command = 'sshpass -p password ssh user@ip "mysql -u user -pdbpassword -h ip -P port database -e \"SELECT * FROM database.ViewName;\""'
output = check_output(command, shell=True)
它返回这个错误:
bash: -c: línea 0: EOF inesperado mientras se buscaba un `"' coincidente
bash: -c: línea 1: error sintáctico: no se esperaba el final del fichero
/bin/sh: 1: : Permission denied
Traceback (most recent call last):
File "ipcompare.py", line 8, in <module>
output2 = check_output(command2, shell=True)
File "/usr/lib/python2.7/subprocess.py", line 223, in check_output
raise CalledProcessError(retcode, cmd, output=output)
subprocess.CalledProcessError: Command 'sshpass -p password ssh user@ip "mysql -u user -pdbpassword -h ip -P port database -e \"SELECT * FROM database.ViewName;\""' returned non-zero exit status 127
我试过了:
- chmod 777 到我的脚本,错误还是一样。
- 将双引号更改为单引号。
- 转义所有特殊字符。
【问题讨论】:
-
不确定这是否会执行 sql 查询。