Установка пароля без подключения SunOS с использованием ожидаемого - PullRequest
0 голосов
/ 04 июля 2018

Хост-система, с которой я пытаюсь установить удаленное соединение, работает на SunOS. В системе нет ssh-copy-id. После поиска я обнаружил, что следующая команда при ее выполнении будет имитировать функцию ssh-copy-id.

 cat ~/.ssh/id_rsa.pub | ssh remotehost 'cat >>~/.ssh/authorized_keys && echo "Host Key Copied"'

Я пытаюсь написать скрипт, используя ожидаемое выполнение этой операции, но он завершается неудачно со следующей ошибкой. Код:

#!/usr/bin/expect -f
#!/bin/bash

set username  [lindex $argv 0]
set password  [lindex $argv 1]
set host      [lindex $argv 2]

cat ~/.ssh/id_rsa.pub | ssh remotehost 'cat >>~/.ssh/authorized_keys && echo \"Host Key Copied\"'
expect "Password:"
send "$password\n"
expect eof

Ошибка:

invalid command name "cat"
    while executing
"cat ~/.ssh/id_rsa.pub | ssh remotehost 'cat >>~/.ssh/authorized_keys && echo \"Host Key Copied\"'"
    (file "./remote.sh" line 8)

Из поиска я понял, что ожидаемый не будет принимать команды оболочки по умолчанию. Может ли кто-нибудь помочь в решении моей проблемы. Заранее спасибо.

1 Ответ

0 голосов
/ 04 июля 2018

Вам не хватает команды spawn: spawn запускает процесс, с которым вы взаимодействуете. Вам также не хватает команды ssh-copy-id:

spawn ssh-copy-id $username@$host
expect ...

Тем не менее, значительно снижает безопасность. Передавая пароль в виде открытого текста в командной строке, где он, вероятно, будет храниться в файле истории вашей оболочки.

...