Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование в *nix (http://forum.oszone.net/forumdisplay.php?f=35)
-   -   Доработка скрипта на Bash (http://forum.oszone.net/showthread.php?t=302291)

parrabol 11-07-2015 13:06 2527696

Доработка скрипта на Bash
 
Добрый день. Нужна помощь в доработке скрипта. Нужно чтобы при запуске ./script servername filename

Происходило копирование файла и его извлечение на сервере. Привожу код скрипта

Код:

#!/bin/bash

dev="deploy@1.2.3.4"
test="deploy@1.2.3.5"

way="/var/www/builds/"
front="/var/www/html/test1/"
file="$way/front_build_$1.tar.gz"
key="/var/www/conf/id_rsa"

scp -i $key $file $test:/var/www/html/test/
ssh -i $key $test "tar xvf /var/www/html/test/front_build_$1.tar.gz --overwrite- dir --exclude='./cache' --exclude='./logs' -C $front

"

Сейчас копирование и извлечение происходит только на сервер test. А мне нужно, чтобы он при запуске понимал сервера, которые в нем описаны. К примеру.

./script dev 10
и, соответсвтенно

./script test 10
Нужна ваша помощь.

ruslandh 11-07-2015 13:14 2527700

Т.е. вам нужны два массива со строками, я правильно понял?

Наверное, их нужно будет менять, и тогда логично, что их надо читать из текстового файла?

http://rtfm.co.ua/bash-ispolzovanie-massivov/
http://www.linux.org.ru/forum/develo...omment-9097969

http://www.linux.org.ru/forum/develo...69?cid=9097969
Цитата:

В баше есть такая функция, readarray…
man -P"less -p'^\s+readarray'" bash
Вы бы его хоть открывали иногда.

parrabol 11-07-2015 13:36 2527706

Не совсем так. Я думаю нужно делать так.

case "$1" in
dev)
server="deploy@1.2.3.4"
;;
test)
server="deploy@1.2.3.5"
;;
*)
echo "первый параметр должен быть либо dev, либо test"
exit 1
;;
esac

mixmar 25-10-2016 15:10 2681531

Есть скрипт на bash обработки некоторых данных, вот через один фрагмент выполнения с помощью команды curl получены данные на короткую ссылку через goo.gl с выводом в файл с именем name в формате json, все эти данные как и сама команда выполнения для примера, и являются частичным фрагментом содержимого скрипта.
Вот команда curl, естественно в ней введен реальный ключ вместо этого {Мой ключ из Goo} -
Код:

#/bin/sh

curl https://www.googleapis.com/urlshortener/v1/url?key={Мой ключ из Goo} -H 'Content-Type: application/json' -d '{"longUrl": "http://samlab.ws/"}' > name

Вот данные из файла name в таком формате, что получены через эту команду в скрипте -
Код:

{
 "kind": "urlshortener#url",
 "id": "https://goo.gl/f7p8",
 "longUrl": "http://samlab.ws/"
}

Помогите с изменением скрипа именно на bash, как из этого файла вывести в переменную или в другой файл только данные строки с "id": "https://goo.gl/f7p8", но без кавычек, типа вот только это - https://goo.gl/f7p8? И возможно ли сразу через curl выполнить все это сразу с получением в итоге этого https://goo.gl/f7p8, и что тогда надо еще добавить в эту мою команду?
И еще, если у меня в начале скрипта вот это #/bin/sh вместо #!/bin/bash, играет ли какую роль на само выполнение скрипта, и в чем тут разница? Спасибо!

MakaBooka 31-10-2016 14:45 2683359

Цитата:

Цитата mixmar
И еще, если у меня в начале скрипта вот это #/bin/sh вместо #!/bin/bash, играет ли какую роль на само выполнение скрипта, и в чем тут разница? Спасибо! »

это легко проверить.
Код:

ls -l /bin/sh
если это отдельный интерпретатор, то разница есть. если симлинк на bash/dash, то считай разницы нет. если скрипт написан для баша, на sh он может не выполняться, писать универсальные скрипты осиливают не все. проверить можно запустив скрипт конкретным интерпретатором и посмотреть на результат и выхлоп:
Код:

/bin/sh <имя скрипта>
Цитата:

Цитата mixmar
И возможно ли сразу через curl выполнить все это сразу с получением в итоге

нет
Цитата:

Цитата mixmar
и что тогда надо еще добавить в эту мою команду? »

Код:

curl https://www.googleapis.com/urlshortener/v1/url?key={Мой ключ из Goo} -H 'Content-Type: application/json' -d '{"longUrl": "http://samlab.ws/"}' | grep \"id\" | cut ...
про cut почитайте.


Время: 06:14.

Время: 06:14.
© OSzone.net 2001-