Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Администрирование *NIX систем > Доработка скрипта на Bash


Автор: ka4a 11.7.2015, 12:55
Добрый день. Нужна помощь в доработке скрипта. Нужно чтобы при запуске ./script servername filename

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

Код

#!/bin/bash

dev="[email protected]"
test="[email protected]"

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
Нужна ваша помощь.

Автор: Сумасшедший 12.7.2015, 07:17
Код

echo $1 

или
Код

ARGS=("$@")
echo ${ARGS[0]}

Автор: tzirechnoy 12.7.2015, 13:41
Код
#!/bin/bash
 dev="[email protected]"
 test="[email protected]"
 way="/var/www/builds/"
 front="/var/www/html/test1/"
 file="$way/front_build_$1.tar.gz"
 key="/var/www/conf/id_rsa"
 if [ "$#" -ne 2 ]; then
   echo "Usage: $0 servername buildno" 1>&2
   exit 1
 fi
 case "$1" in
    dev)  
        server="$dev" 
    ;;
    test)
        server="$test" 
    ;;
    *)
      echo "Error: servername should be 'dev' or 'test'" 1>&2
      exit 1 
    ;;
 esac
 scp -i "$key" "$file" "$server:/var/www/html/test/"
 ssh -i "$key" "$server" "tar xvf '/var/www/html/test/front_build_$2.tar.gz' --overwrite-dir --exclude='./cache' --exclude='./logs' -C '$front'"


Ну, примерно так, не тэстировал на самом деле.

И да, с variable quoting в ssh всё довольно плохо, на самом деле. Но, по факту, сейчас только одинарные кавычки запрещены в $2 и $front.

Автор: _zorn_ 14.7.2015, 07:14
Код
#!/bin/bash

dev="[email protected]"
test="[email protected]"

echo ${!1}

Цитата
./script dev
[email protected]
-----
./script test
[email protected]


Ну тут еще наверное надо вставить проверку типа
Код

[ -z "${!1}" ] && echo "Server with name '$1' not found" && exit

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)