Использование Expect - это, как правило, неправильный способ делать подобные вещи.Правильный способ - настроить ssh-ключи, чтобы вы могли ssh и запускать команды на удаленном компьютере без ввода пароля.Вот как это сделать:
0. Create public/private key pair on local machine.
(Only needs to be done once on local machine for all remote machines.)
Go to the ~/.ssh directory on your local machine and do this:
% ssh-keygen -t rsa
1. Copy the public key to the remote machine:
% scp ~/.ssh/id_rsa.pub you@foo.com:.
2. Append that key to the authorized_keys file on the remote machine:
% ssh you@foo.com 'cat id_rsa.pub >> .ssh/authorized_keys; /bin/rm id_rsa.pub'
3. Finally, in case it doesn't work, check permissions, which must be just so:
(or maybe it's just that they can't be group/world writeable)
% cd ~; ls -ld . .ssh .ssh/authorized_keys
drwxr-xr-x .
drwxr-xr-x .ssh
-rw-r--r-- .ssh/authorized_keys
Вот скрипт, который выполняет все одним махом:
http://jakehofman.com/code/sshkey
Затем вы можете запускать команды на пультемашина выглядит так:
ssh alice@remote.com ./foo args
Выполнение команд на удаленной машине с помощью sudo, однако, может быть другой историей.Надеюсь, что другие могут вмешаться в это.Но в качестве первого шага вам следует избегать Ожидать начального входа в систему.