嘿,我是全新的Unix,我需要写一个“shell脚本”(?)连接到另一个terminal,并运行一些SQL查询。 我到底怎么做到这一点? 我一直在浏览这个和其他板的几个答案,如果我find了我的答案,我不明白这一点。
我能够手动连接,input密码等,但我需要自动化的过程。 我没有访问Perl(如一些答案已经build议),我无法编辑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
请全部解释所有答案。 我正在尝试学习。
尝试这个:
cat ~/.ssh/id_rsa.pub
输出)。 如果您没有SSH密钥对,则使用本教程进行生成。 ~/.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
。 也检查这个答案 。
可能不是100%相关,但我必须在Linux上做同样的事情。
首先,您希望在另一台具有SSH访问权限的服务器上创建一个新的用户帐户,并生成SSH密钥对,
即使你要以root身份执行此操作,
密钥对远远超过标准密码,因为它们更强大,
它们允许您通过SSH自动登录。
没有真正的自动化密码输入过程的方法(至少在Linux上不行),因此需要使用SSH密钥来实现这一点。
基本上可以将一串命令作为参数发送到SSH工具。
像这样,
ssh user@host "ls; cat *; yes;"
希望有所帮助。
有一个Linux命令ssh-copy-id将为你做这个,它也可以作为一个自制软件的Mac公式。