LINUX.ORG.RU
ФорумAdmin

Изменение файла через ssh посредством ssh

 , , ,


0

1

Доброго времени суток!

Прошу помощи в решении проблемы

Посредством подключения через ssh необходимо выполнить скрипт на удаленной машине. Не могу разобраться с sed. А точнее как он взаимодействует с передаваемыми переменными

Пример:

#!/bin/bash
#
A="java.extended.prop=-XX\:NewSize\=1024m -XX\:MaxNewSize\=1024m -XX\:PretenureSizeThreshold\=10m"

ssh root@10.2.200.172 "
B=\$(echo $A | cut -d "=" -f 2-)
touch /tmp/test.txt
echo "java.extended" > /tmp/test.txt
cat /tmp/test.txt
sed -i '/java/a \$B' /tmp/test.txt
cat /tmp/test.txt
"
Результат работы будет таков:
java.extended
$B

Как правильно передать sed переменную, вычисленную на удаленной машине, чтобы получить необходимую мне запись?

Что должно получиться:

java.extended
-XX\:NewSize\=1024m -XX\:MaxNewSize\=1024m -XX\:PretenureSizeThreshold\=10m



Последнее исправление: beastie (всего исправлений: 5)

оформи это месиво в LORCODE, пожалуйста

zolden ★★★★★
()

Одинарные кавычки в баше делают все буквальным. Просто замени их на двойные. Советчики с фабриком и ансиблем — идите в хабру.

redixin ★★★★
()
Ответ на: комментарий от entefeed

Согласен, никакого ада с ковычками в том случае, если это единичный вызов

Приведенный пример, это лишь часть скрипта.

Не хотелось бы снова переписывать его

Уже многое перепробовал, но никак не могу передать переменную в sed. Максимум, что удавалось - это записать имя переменной вместо ее значения

m1xa
() автор топика
Ответ на: комментарий от redixin

иногда лучше подсказать то, чем корректнее делать ту или иную задачу, если в однострочном вызове к серверу появляются переменные и логика, это всегда лучше делать отдельным скриптом, и для этого отлично подходит fabric, это не единственный инструмент такого рода, но если автор не знал про него, то направление ему должно быть понятно

fura13 ★★★
()
Ответ на: комментарий от m1xa

Кажись этот парниша меня игнорит, но если вдруг нет --

Еще раз для особо понятливых: не юзай одинарные кавычки если не хочешь выводить имя переменной вместо ее содержания

Неправильно:

 sed '$BLAH' # одинарные кавычки на то и одинарные чтобы выводить все буквально

Правлиьно

sed "$BLAH"

redixin ★★★★
()
Ответ на: комментарий от fura13

Спасибо за совет! Да, до этого не знал про такой проект.
Возможно, реализовывать решение своей задачи буду уже посредством подобного проекта
Но мне бы все-таки хотелось найти ответ на свой вопрос при реализации через sed. Хотя бы просто в качестве саморазвития

m1xa
() автор топика
Ответ на: комментарий от m1xa

Вы кстати тоже не особо рабочий вариант-то выложили. Насчет двойных кавычек вам правильно подсказали, только весь скрипт на одинарные замените ssh root@10.2.200.172 '....'

anc ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.