嘿,我完全不熟悉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公钥复制到剪贴板(cat~ / .ssh / id_rsa.pub的输出).如果您没有SSH密钥对,则使用this tutorial生成密钥对.
>将公钥粘贴到服务器的〜/ .ssh / authorized_keys文件中.如果没有,请使用nano~ / .ssh / authorized_keys创建并粘贴到那里.
>在计算机中,可以使用以下命令在服务器中运行脚本:
ssh user@server_ip 'bash -s' < local_script.sh
或者,如果您只有一个命令可以运行,那么这将执行:
ssh user@server_ip "echo Test | tee output.log"
>如果您不喜欢SSH一直要求您输入密码,请使用ssh-agent
对于特定于SQL的脚本,您可以将所有SQL命令放在单个文件中,例如query.sql.您应该将query.sql复制到您的服务器(scp query.sql user @ server_ip:〜/)然后运行
ssh user@server_ip "mysql -uyourusername -pyourpassword < query.sql | tee output.log"
输出将保存在output.log中.检查this answer.