2013-10-10 2 views
4

Я пытаюсь запустить команду sshpass внутри скрипта bash, но он не работает.Как установить команду sshpass внутри скрипта bash?

Если я запускаю ту же команду с терминала, она отлично работает, но ее запускают в сценарии bash, но это не так.

#! /bin/bash 

sshpass -p 'password' ssh [email protected] command 

Я знаю о проблемах безопасности, но теперь это не важно.

Может кто-нибудь помочь? Я что-то упускаю.

Благодаря

+0

Что означает «не работает»? Не могли бы вы объяснить это лучше, пожалуйста? Может ли «вы эхо $?» После вызова sshpass? – Grzegorz

+0

Вы используете сценарий из задания cron? Возможно, sshpass не находится в '$ PATH', потому что задание cron не запускает ваш' .profile'. – Barmar

ответ

9

ли which sshpass в вашей команде чтобы получить абсолютный путь до sshpass и заменить его в сценарии bash.

Вы также должны, вероятно, сделать то же самое с command, который вы пытаетесь запустить.

Проблема может заключаться в том, что она не находит ее.

+0

Хорошо, теперь это не работает. позвольте мне просто поставить команду, которую я хочу передать здесь. Я даже попытался поместить все пути: /usr/bin/sshpass -p 'password'/usr/bin/ssh [email protected] sudo/bin/sh /home/Projecto/AVstart_1.sh – rcsimoes

+0

@rcsimoes Что это ошибка, которую вы получаете? Запустите точную команду в терминале и опубликуйте полученную ошибку. –

+0

в терминале команда работала, но она не была встроена в сценарий bash или в python с использованием os.system. Я уже решил проблему y addind «StrictHostKeyChecking = no» для команды. Спасибо за всю помощь здесь. У меня теперь есть другая проблема, но я думаю, я должен задать новый вопрос, потому что это не связано с этим – rcsimoes

7

1 - Можно написать сценарий sshpass's ssh команду:

#!/bin/bash 

export SSHPASS=password 
sshpass -e ssh -oBatchMode=no [email protected] 

2 - Вы можете сценарий sshpass «s sftp commandlike это:

#!/bin/bash 

export SSHPASS=password 

sshpass -e sftp -oBatchMode=no -b - [email protected] << ! 
    put someFile 
    get anotherFile 
    bye 
! 
+0

Что значит 'sftp'? – Barmar

+0

sftp является одной из команд sshpass – anubhava

+0

@Barmar: Смотрите оба примера. Один показывает команду ssh еще один показывает sftp – anubhava

9

Попробуйте параметр «-o StrictHostKeyChecking = no» для ssh («- o» является флагом, который сообщает ssh, что вы собираетесь использовать опцию). Он принимает любой входящий RSA-ключ из вашего ssh-соединения, даже если ключ не находится в списке «известный хост».

sshpass -p 'password' ssh -o StrictHostKeyChecking=no [email protected] 'command' 
2

Я не понимаю, как принятый ответ отвечает на актуальный вопрос о том, как запускать любые команды на сервере после sshpass дается из файла Баш сценария. По этой причине я даю ответ.


После команды ваш предоставленный сценарий, выполнить дополнительные команды, как показано ниже:

sshpass -p 'password' ssh [email protected] "ls; whois google.com;" #or whichever commands you would like to use, for multiple commands provide a semicolon ; after the command 

В вашем скрипте:

#! /bin/bash 

sshpass -p 'password' ssh [email protected] "ls; whois google.com;" 
1

Это работает для меня:

#!/bin/bash 

#Variables 
FILELOCAL=/var/www/folder/$(date +'%Y%m%d_%H-%M-%S').csv  
SFTPHOSTNAME="myHost.com" 
SFTPUSERNAME="myUser" 
SFTPPASSWORD="myPass" 
FOLDER="myFolderIfNeeded" 
FILEREMOTE="fileNameRemote" 

#SFTP CONNECTION 
sshpass -p $SFTPPASSWORD sftp [email protected]$SFTPHOSTNAME << ! 
    cd $FOLDER 
    get $FILEREMOTE $FILELOCAL 
    ls 
    bye 
! 

Возможно, вам необходимо установить sshpass:

sudo apt-get install sshpass 
Смежные вопросы