Попробуйте любой из двух:
$, который Java
$ whereis Java
Для Вашего первого Java программа прочитала это учебное руководство:
Исправьте меня, если я неправ, но Вы, кажется, желаете выполнить регулярные команды оболочки на удаленном сервере, где сценарий локален.
#!/bin/sh
trap "rm -f /tmp/sendonssh.$$.*" 0 1 2 3 15
# commands to run on the remote server
cat <<'EOF' >> /tmp/sendonssh.$$.sh
mkdir -p /tmp/foobar.$$
mv $HOME/xyzzy /tmp/foobar.$$
chmod 640 $HOME/xyzzy
EOF
# call for each argument
for userhost in "$@"; do
errorout=`ssh -aTxo BatchMode=yes $userhost /bin/sh -s < /tmp/sendonssh.$$.sh 2>&1`
rc=$?
if [ $rc -ne 0 ]; then
echo "Error: $userhost: $errorout"
exit $rc
fi
done
Я делаю это с некоторым 'удаленным выполнением' приложения в моей тестовой среде с помощью Python вместо оболочки: ssh $userhost python < $pythonscriptfilename
.
Эквивалент SSH sftp -b <filename> <hostname>
был бы:
ssh -o BatchMode=yes <hostname> sh -s < "<filename>"
Как насчет сохранить это простым и выполнить "пакетный" файл на другом компьютере?
И пакетный файл был бы нормальным сценарием оболочки, таким образом, синтаксис известен.
expect
разработан для взаимодействия с программами, которые ожидают работать на терминале. Это не связано с проблемой выполнения команд по ssh.
– Gilles 'SO- stop being evil'
25.03.2011, 22:01
Вы могли использовать вызванные команды ssh.
Они связаны с конкретным ключом. Когда аутентификация сделана с тем ключом, та команда выполняется и выходы соединения. Одним преимуществом этого подхода является увеличенная безопасность, так как в этом случае ключ не может использоваться для получения до оболочки входа в систему.