我正在尝试使用 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
我努力了:最佳答案
我这样做是为了解决问题:
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)
转义转义字符是这个问题的答案。
关于Python 脚本无法识别 Mysql 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63375404/