Stefan
привет, коллеги
кто-то пытался в баш скрипте передавать read через EOF?
хочу когда меня перекинуло на сервак, чтоб я там мог ввести данные в переменную функции read
ssh user@ip <<EOF
docker images | grep transmitter-client
read var
echo $var
EOF
но по итогу игнорируется, это вообще возможно реализовать в баше?
V
V
вроде бы есть способы попроще это сделать
V
можно использовать следуюую donk архитектуру
сделай простой скрипт на сервере который по кроны будет эту инфу тебе собирать а ты удалённо конектится и смотреть только файл
George
я не понимаю задачу
George
вероятно, я бы сделал это по-другому
Alexey
read читает из stdin
в момент выполнения read в интерпретаторе в stdin поступает твой скрипт.
положи на машины скрипт, который делает то что ты хочешь и принимает параметром твои теги
Stefan
я не понимаю задачу
ну есть имейдж с названием transmitter-client
у него после каждого деплоя появляется цифра, transmitter-client:1 transmitter-client:2 и тд
мне когда-то нужно будет иногда подчищать ноды от лишних имейджей
хочу чтоб я мог мануально вводить рейндж transmitter-client:{1..10} при помощи read
Dmitry
\$var экранировать надо
Евгений
Stefan
Stefan
пробовал его еще на сервак закинуть, но тоже безуспешно
Stefan
и удаленно запускать скрипт
Navern
Navern
а почему так нельзя?
Navern
зачем передавать через read?
Евгений
Евгений
Но для меня это выглядит немного странно
Евгений
Navern
но вообще работает так же
Navern
'read var && echo $var'
Navern
у меня с ssh так отработало
Stefan
да почему странно то?)
George
че то хрень ты сделал
Navern
да почему странно то?)
Ну мб я просто чегото не понимаю в целом. Для чего это нужно. У меня не возникало подобных тем. Поэтому мне кажется странным
George
ssh user@ip sh -c "docker images | grep transmitter-client | awk '{print $3}' | xargs -r docker rmi"
George
как-то так
Евгений
~ cat test.sh
#!/bin/sh
read var
echo $var
scp test.sh vm-eomelchenko:
test.sh 100% 30 27.9KB/s 00:00
ssh vm-eomelchenko ./test.sh
hello
hello
Navern
sh -c не обязательно даже на самом деле и я бы юзал одинарные кавычки или эскейпил $
George
если нужно количество впихнуть, то двойные скобки самое то, т.к. они разрешают подстановку переменных $var во ВНЕШНЕМ шелле и в ссш уже улетает подстановленное значение
Navern
Stefan
transmitter-client:71
transmitter-client:72
transmitter-client:73
они хранятся на двух нодах кубера
мне нужно чтоб когда я коннекчусь на ноды, я после выхлопа docker images указал верный рейндж тегов контейнеров, чтоб оно удалило только определенное кол-во имейджей, а не всё нахер убило
Stefan
собственно
read var1
read var2
docker rmi transmitter-client:{$var1..$var2}
Karen
а разве через неинтерактивную сессию (```ssh user@host <<< stuff```) можно передавать интерактивный stdin?
Stefan
Евгений
ssh user@ip 'docker images --filter reference="transmitter-client:*" && read var1 && read var2 && docker rmi transmitter-client:{$var1..$var2}'
Евгений
Вот так вот
Stefan
О_О
Stefan
пездес
Stefan
работает
Stefan
а почему это оно так странно...
George
Navern
у тебя синтаксис EOF был лишний
George
убери его нахрен
Stefan
обычными кавычкаим и всё
Karen
потоу что <<< неинтерактивный как и EOF
Karen
емнип
George
пример херовый
George
уберите рид
Евгений
Человек попросил как сделать рид
Stefan
пример херовый
почему?)) мне всего лишь нужно было понять почему read не пашет, в остальном уже не столь важно
George
export var1=1
export var2=2
ssh user@ip "docker images --filter reference=\»transmitter-client:*\» && docker rmi transmitter-client:{$var1..$var2}"
George
не ? так не пойдет?
George
ну, епть
Navern
Navern
никто не ззнает зачем)
George
да нахер он там?
Navern
но ты решаешь другую задачу
Евгений
Типикал IT чат
- как сделать A
- уберите А не нужно
George
вы не ту задачу решаете
George
Navern
эту пусть чувак сам разбирается чо ему там нужно
George
да епть
Jürgen
проще mussh заюзать))
Евгений
George
если уж совсем приперло - рид можно сделать снаружи от ссш
Stefan
George
парни, тут читаешь, можно попкорном всегда запасаться
Stefan
пустой переменная будет
Jürgen
George