【发布时间】:2013-09-28 20:42:02
【问题描述】:
大家好,我是 Unix 的新手,我需要编写一个“shell 脚本”(?)来连接到另一个终端并运行一些 SQL 查询。我到底该怎么做?我一直在浏览这个和其他板上的一些答案,如果我找到了我的答案,我不明白。
我可以手动连接、输入密码等,但我需要自动化这个过程。我无权访问 Perl(正如一些答案所建议的那样),我无法编辑 etc/shadow 文件。所以我认为这必须严格通过 Unix 本身来完成。这是我目前使用的:
X=`vUser='USER-NAME'
vPass='PASSWORD'
vTable='TABLENAME'
vHOST='HOST-NAME'
vPORT=4443
ssh root@vHost
expect {
"root@the-host password:"{
send -s "'vPass'\r"
}
}
SQL_Query='select * from vTable limit 10'
mysql -p$vPASS -D$vTable -u$vUser P$vPort<<EOF
$SQL_Query
EOF`
echo $X>Output.dat
请完整解释所有答案。我正在努力学习。
【问题讨论】:
-
您可能只想创建一个无密码的 SSH 密钥对:linuxconfig.org/passwordless-ssh 但是请注意,您的脚本似乎是以 root 身份连接到远程计算机。你真的不应该这样做,而且你尤其是不应该使用无密码密钥对来这样做。
-
是的。在这种情况下,您不应使用密码。您还可以在接受的答案中找到创建 SSH 密钥here 的方法。
-
通常认为通过 ssh 禁用 root 访问是一种好习惯。
标签: mysql shell unix ssh passwords