2013-09-23 2 views
2

Привет всем, я полностью новичок в Unix, и мне нужно написать «shell-скрипт» (?), Чтобы подключиться к другому терминалу и запустить несколько SQL-запросов. Как же я это делаю? Я просматривал несколько ответов от этого и других советов, и если бы нашел свой ответ, я этого не понимаю.Unix SSH без пароля

Я могу подключиться вручную, вводить пароль и т. Д., Но мне нужно автоматизировать процесс. У меня нет доступа к Perl (как было предложено несколькими ответами), и я не могу редактировать файл etc/shadow. Поэтому я предполагаю, что это нужно делать строго через Unix. Это то, что я использую в настоящее время:

X=`vUser='USER-NAME' 
vPass='PASSWORD' 
vTable='TABLENAME' 

vHOST='HOST-NAME' 

vPORT=4443 

ssh [email protected] 
expect { 
    "[email protected] 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 

Пожалуйста, объясните все ответы в полном объеме. Я пытаюсь выучить.

+2

Возможно, вы просто хотите создать беспроблемную пару ключей SSH: http://linuxconfig.org/passwordless-ssh Будьте осторожны, однако, ваш скрипт, похоже, подключается к удаленному компьютеру с правами root. Вы действительно не должны этого делать, и вы ** особенно ** не должны делать это с помощью пароля без ключа. – Mike

+0

Да. В этом случае вы не должны использовать пароли. Вы также можете найти способ создания SSH-ключа [здесь] (http://serverfault.com/questions/241588/how-to-automate-ssh-login-with-password) при принятом ответе. – Rik

+0

Обычно считается хорошей практикой для отключения доступа root через ssh. – symcbean

ответ

1

Попробуйте это:

  1. Скопируйте SSH публичный ключ в буфер обмена (выход из cat ~/.ssh/id_rsa.pub). Если у вас нет пары ключей SSH, то сгенерируйте ее с помощью this tutorial.
  2. Вставьте свой общественный ключ в файл ~/.ssh/authorized_keys вашего сервера. Если его нет, создайте его с помощью nano ~/.ssh/authorized_keys и вставьте его туда.
  3. В вашем компьютере, вы можете запустить скрипт на сервере с помощью следующей команды:

    ssh [email protected]_ip 'bash -s' < local_script.sh 
    

    Или если у вас есть одна команда для запуска, то это будет делать:

    ssh [email protected]_ip "echo Test | tee output.log" 
    
  4. Если вам не нравится, когда SSH запрашивает у вас пароль все время, используйте ssh-agent

Для сценариев, специфичных для SQL, вы можете поместить все ваши команды SQL в один файл, скажем query.sql. Вы должны скопировать query.sql на сервер (scp query.sql [email protected]_ip:~/), а затем запустить

ssh [email protected]_ip "mysql -uyourusername -pyourpassword < query.sql | tee output.log" 

Выход будет сохранен в output.log. Проверьте также this answer.

3

Не может быть актуальным на 100%, но я должен был сделать то же самое в Linux.

Во-первых вы хотите, чтобы сделать новую учетную запись пользователя на другом сервере, который имеет доступ к SSH и генерировать SSH ключей,
даже если вы собираетесь сделать это, как корень,
пары ключей гораздо выше по сравнению со стандартными паролями, потому что они сильнее,
, и они позволяют вам автоматически регистрироваться через SSH.

Не существует реального способа автоматизации процесса ввода пароля (по крайней мере, не в Linux), поэтому причина этого требует SSH-ключей.

Вы можете в принципе отправить цепочку команд в качестве параметра в инструмент SSH.
ssh [email protected] "ls; cat *; yes;"
Надеюсь, что помогло.

0

Существует команда Linux. Ssh-copy-id сделает это за вас, она также доступна для Mac в качестве формулы доморощенного.

Смежные вопросы