как выйти из unusual/uniq символов из, ожидают сценарии?

Можно сделать это с env:

env -i your_command

Вопреки комментариям ниже, это действительно полностью убирает среду, но она не предотвращает your_command установка новых переменных. В частности, выполнение оболочки вызовет /etc/profile работать, и оболочка может иметь некоторых созданных в настройках также.

Можно проверить это с:

env -i env

т.е. вытрите среду и затем распечатайте ее. Вывод будет пробелом.

1
04.08.2013, 20:55
2 ответа

Я не совсем уверен, почему, но Вам нужны некоторые дополнительные 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
2
27.01.2020, 23:29
  • 1
    Да я думаю, что это имеет некоторое отношение к тому, что он ssh ... к другому хосту у Вас обычно есть Escape t, по крайней мере, однажды для этого плюс другое время для оболочки (следовательно мой подход). –  slm♦ 04.08.2013, 21:11

Вместо выполнения 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 пара ключей для упрощения входа в систему удаленно, не будучи должен подать пароль.

1
27.01.2020, 23:29
  • 1
    видит, что мой комментарий о "\" - не помогает! –  maihabunash 04.08.2013, 20:33
  • 2
    попробуйте его - я редактирую свой вопрос с моим сценарием, можно попробовать его на машине и видеть, что "\" прежде "\" не помогают, –  maihabunash 04.08.2013, 20:42
  • 3
    @maihabunash - Да это не будет работать, когда Вы попробуете, '+ Вы - ssh' 'луг. ssh требует своего собственного выхода, см. ответ @terdon. –  slm♦ 04.08.2013, 21:29

Теги

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