Expect and send будет отправлять открытым текстом - но ваше SSH-соединение будет шифровать.
Но вместо того, чтобы писать сценарий (и хранить в нем свой пароль!), почему бы не попробовать использовать конфигурацию SSH и аутентификацию на основе личного/публичного ключа.
Сначала сгенерируйте свой собственный закрытый SSH-ключ и сопутствующий ему открытый. Просто запустите
ssh-keygen
И либо введите пароль (который может отличаться от пароля учетной записи пользователя, и вам придется вводить его каждый раз при входе в систему), либо не вводите (пароль на ключе отсутствует, поэтому он никогда не запрашивается). Даже если вы назначите пароль на пару ключей, локальная служба связки ключей может кэшировать аутентификацию и автоматически разблокировать ее для вас, в зависимости от того, какую среду рабочего стола вы используете.
Затем скопируйте ваш файл ~/.ssh/id_rsa.pub на remotehost:~/.ssh/authorized_keys
scp ~/.ssh/id_rsa.pub user@remotehost:~/
ssh user@remotehost
mkdir .ssh
cat id_rsa.pub >> .ssh/authorized_keys
chmod 600 .ssh/authorized_keys
и выйдите из системы. Затем отредактируйте свой ~/.ssh/config и внесите запись типа
Host router
Hostname 192.168.1.1
User routerusername
Port 22
Имя, указанное в первой строке Host, не обязательно должно быть DNS-именем, это может быть ник или любое другое имя, которое вам нравится. Конфигурационный файл поддерживает все опции командной строки, такие как переадресация X и т.д. Вы даже можете указать на разные файлы идентификации для разных хостов....
Теперь просто сделайте
ssh router
И вы автоматически войдете в систему.