Можно сделать это с env
:
env -i your_command
Вопреки комментариям ниже, это действительно полностью убирает среду, но она не предотвращает your_command
установка новых переменных. В частности, выполнение оболочки вызовет /etc/profile
работать, и оболочка может иметь некоторых созданных в настройках также.
Можно проверить это с:
env -i env
т.е. вытрите среду и затем распечатайте ее. Вывод будет пробелом.
Я не совсем уверен, почему, но Вам нужны некоторые дополнительные Escape. Попробуйте это:
{send "perl -i -pe 's/\\\\\Q127.0.0.1\\\\\E/1.1.1.1/' /etc/hosts\r"}
Я не уверен в деталях, но это имеет некоторое отношение к сценарию, выполняемому i) через оболочку, ii) через ожидают и iii) через Perl. Вероятно, каждый из них (или комбинация) должен иметь \
оставленный, который является, почему Вы заканчиваете тем, что нуждались в таком количестве вложенных Escape.
Так или иначе, как @slm упомянутый в его комментарии, Вы действительно не должны ожидать для этого. Просто настройте пароль меньше ssh
и затем просто выполненный
ssh 192.9.200.10 perl -i -pe 's/\Q127.0.0.1\E/1.1.1.1/' /etc/hosts
Вместо выполнения expect
Вы могли сделать это только с ванилью ssh
и HEREDOC:
#!/bin/bash
ssh -T ssh root@192.9.200.10 <<\EOI
perl -i -pe 's/\Q10.10.10.10\E/1.1.1.1/' /etc/hosts
EOI
Я не это на ksh
но это должно легко быть адаптировано к этому в случае необходимости. Также я использую a ssh
пара ключей для упрощения входа в систему удаленно, не будучи должен подать пароль.
ssh ...
к другому хосту у Вас обычно есть Escape t, по крайней мере, однажды для этого плюс другое время для оболочки (следовательно мой подход). – slm♦ 04.08.2013, 21:11