Недопустимая “ошибочная” c-оболочка значения плавающая

С первым нет tty для ssh, т.к. stdin не подключен к терминалу, а вот этот файл. На самом деле, если я попытаюсь выполнить аналогичную команду (в Debian), то получу следующую ошибку:

Pseudo Terminal не будет выделен, так как stdin не является терминалом.

Чтобы заставить его работать, вы можете сделать что-то вроде:

ssh -tt 192.168.1.100 <<EOF
sudo -S id
password
EOF

Хотя это не очень хорошая идея, так как пароль будет простым текстом.

Обновление

Я наткнулся на простое решение, которое позволяет избежать кодирования пароля открытым текстом, вы можете использовать графическую программу для ввода пароля:

ssh -X 192.168.1.100 <<EOF
SUDO_ASKPASS=/usr/lib/ssh/x11-ssh-askpass sudo -A id
EOF

Конечно, программа ssh-askpass должна быть установлена в данном месте, и вы должны запустить сеанс X на машине, над которой вы работаете. Есть несколько вариантов программы ssh-askpass, которые также должны работать (версии Gnome/KDE). Также должна работать графическая программа замены sudo типа gksu или kdesudo.

1
24.04.2014, 18:09
1 ответ

Если xbiz или xbder пуст, bc будет жаловаться (здесь bash)

$ echo "5.2 + " | bc -l
(standard_in) 2: syntax error

Вам понадобится что-то вроде (непроверено)

if (! $?xbiz) set xbiz = 0
set varx = `echo " 5.2 + $xbiz" | bc -l`
if (! $?xbder) set xbder = 0
set vary = `echo " 5.2 + $xbder" | bc -l`
1
27.01.2020, 23:52

Теги

Похожие вопросы