2

Hey all I'm completely new to Unix and I need to write up a "shell script" (?) to connect to another terminal and run a few SQL queries. How on earth do I do this? I've been browsing a few answers from this and other boards and if I have found my answer I don't understand it.

I am able to manually connect, enter password, etc, but I need to automate the process. I don't have access to Perl (as a few answers have suggested) and I am unable to edit the etc/shadow file. So I assume this has to be done strictly through Unix itself. This is what I am currently using:

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

Please explain all answers in full. I'm trying to learn.

4

3 回答 3

3

可能不是 100% 相关,但我必须在 Linux 上做同样的事情。

首先,您想在具有 SSH 访问权限的另一台服务器上创建一个新用户帐户并生成一个 SSH 密钥对,
即使您要以 root 身份执行此操作,
密钥对也远优于标准密码,因为它们更强大,
并且它们允许您通过 SSH 自动登录。

没有真正的方法可以使密码输入过程自动化(至少在 Linux 上没有),因此需要 SSH 密钥来执行此操作。

您基本上可以将命令链作为参数发送到 SSH 工具。
像这样,
ssh user@host "ls; cat *; yes;"
希望有帮助。

于 2013-09-23T20:56:33.463 回答
1

尝试这个:

  1. 将 SSH公钥复制到剪贴板(的输出cat ~/.ssh/id_rsa.pub)。如果您没有 SSH 密钥对,请使用本教程生成它。
  2. 将您的公钥粘贴到服务器的~/.ssh/authorized_keys文件中。如果没有,请创建它nano ~/.ssh/authorized_keys并将其粘贴到那里。
  3. 在您的计算机中,您可以使用以下命令在服务器中运行脚本:

    ssh user@server_ip 'bash -s' < local_script.sh
    

    或者,如果您要运行一个命令,那么这将执行以下操作:

    ssh user@server_ip "echo Test | tee output.log"
    
  4. 如果您不喜欢 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. 也检查这个答案

于 2013-09-23T21:03:43.973 回答
0

有一个 Linux 命令 ssh-copy-id 会为您执行此操作,它也可以作为自制公式提供给 Mac。

于 2013-09-26T07:20:58.920 回答