IT序号网

Python 脚本无法识别 Mysql 查询

emanlee 2025年05月04日 编程语言 318 0

我正在尝试使用 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 到我的脚本,错误仍然相同。
  • 更改单引号的双引号。
  • 转义所有特殊字符。
  • 请您参考如下方法:

    我这样做是为了解决问题:

    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) 
    
    转义转义字符是这个问题的答案。


    评论关闭
    IT序号网

    微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!