Mysql 客户端在 ssh 内期望引用烦恼

标签 mysql bash ssh expect

我正在尝试在 bash 脚本中执行以下命令:

REPLICATION_USER_SETUP=$(expect -c "spawn ssh $LDAP_USER@$MASTER_IP_ADDRESS \"mysql --user=$MYSQL_USER --socket=$MYSQL_SOCKET --execute \"GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO \'$MYSQL_REPLICATION_USER\'@\'$SLAVE_IP_ADDRESS\' IDENTIFIED BY \'$MYSQL_REPLICATION_PW\';\"\";expect Password:;send $LDAP_PASS\r;interact")

但是每当我尝试运行它时,我总是收到“闭引号后的额外字符”。 我尝试过双引号和单引号的变体,但似乎没有任何效果。 谁能告诉我我在这里做错了什么?

最佳答案

尝试转义sql查询的反斜杠:

REPLICATION_USER_SETUP=$(expect -c "spawn ssh $LDAP_USER@$MASTER_IP_ADDRESS \"mysql --user=$MYSQL_USER --socket=$MYSQL_SOCKET --execute \\\"GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO \'$MYSQL_REPLICATION_USER\'@\'$SLAVE_IP_ADDRESS\' IDENTIFIED BY \'$MYSQL_REPLICATION_PW\';\\\"\";expect Password:;send $LDAP_PASS\r;interact")

关于Mysql 客户端在 ssh 内期望引用烦恼,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11395498/

相关文章:

mysql - Select count 在内部联接中返回 null 而不是 0

javascript - 在复选框中显示来自 mySQL 的 true 或 false (0/1)

linux - 如何获取 find 命令的参数并将它们打印出来?

regex - ls 和 find 之间的正则表达式差异以搜索 1 个字符串或另一个字符串

ssh - ssh的url方案:在远程主机上调用命令

git - 通过openssh从git Windows服务器克隆

MySQL JOIN 行问题

MySQL查询返回包含文本列中搜索词的句子

bash - sed:如果与模式匹配,则打印分隔的行 block

Git:团队如何从测试服务器 pull 和推送到存储库