【发布时间】:2014-07-18 18:31:55
【问题描述】:
我想通过一个 shell 脚本测试与数据库的连接,该脚本将通过 SSH 连接到多个盒子,然后测试 mysql 连接。我有 SSH 密钥,所以我没有在 ssh 命令中明确指定 user@server。该脚本没有像我预期的那样工作,并提示我输入密码但错误并使用密码作为数据库名称。有没有人可以指教一下?
#!/bin/bash
SERVER_LIST=(172.10.1.1 172.10.1.2 172.10.1.3)
CONNECTION=172.0.0.10
USER="username"
PASS="password"
echo "Testing connectivity... "
for SERVER in ${SERVER_LIST[@]}
do
echo "SSHing to $SERVER"
ssh $SERVER "mysql -h $CONNECTION -u $USER -p$PASS"
done
echo "Finished."
经过一番阅读后,我是否应该在密码提示符下使用 expects 命令或类似命令?我已经尝试过这种方法无济于事......
【问题讨论】:
-
您的密码有特殊字符吗?你能告诉我们你在执行脚本时得到了什么吗?
-
确定输入密码:密码错误1049(42000):未知数据库'密码'
-
首先,在 bash 脚本和 ssh 之外尝试使用 mysql 命令。然后使用 ssh 命令和 bash 脚本对其进行测试。如果您不使用root用户,我认为您必须指定一个数据库名称。