mysql – 没有密码的Unix SSH

嘿,我完全不熟悉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.

上一篇:rails安装


下一篇:Python——execjs