LINUX.ORG.RU

Перенос блока текста из скрипта в файл

 


0

1

День добрый! Допустим есть скрипт:

 Add VirtualBox repository
#
cat /etc/apt/sources.list | grep virtualbox
if [ $? -eq 1 ]
then
	sed -i "/cdrom/d" /etc/apt/sources.list
	echo "deb http://download.virtualbox.org/virtualbox/debian stretch contrib" >> /etc/apt/sources.list
	wget https://www.virtualbox.org/download/oracle_vbox_2016.asc && apt-key add oracle_vbox_2016.asc
fi

#
# Install OS packages
#
apt-get update -y && apt-get upgrade -y && apt-get autoremove -y
apt-get -y install $VB_PACKAGES || { echo '[ERROR] Package installation failed! Exiting!' ; exit 1; }
apt-get update -y && apt-get upgrade -y && apt-get autoremove -y

#
# Prepare the phpvirtualbox server user
#
cat /etc/passwd | grep $VB_USERNAME

useradd -m $VB_USERNAME
echo  "$VB_PASSWORD\n$VB_PASSWORD" | passwd $VB_USERNAME
usermod -aG vboxusers $VB_USERNAME


#
# Wget the extension pack and phpvirtualbox resources
#
wget $VB_EXTPACK_URL
wget $VB_PHPVBZIP_URL -O $VB_PHPVBZIP_NAME

#
# Configure the virtualBox extension
#
echo y | vboxmanage extpack install --replace $VB_EXTPACK_NAME
if [ $? -eq 1 ]
then
	echo "There was an error installing the extion pack: $VB_EXTPACK_NAME"
	exit 1
fi

#
# Set up the phpvirtualbox web files
#
rm -rf /var/www/html/*
unzip -q $VB_PHPVBZIP_NAME
mv  phpvirtualbox-5.0-5/* /var/www/html/
cp /var/www/html/config.php-example /var/www/html/config.php
sed -i "12s/'vbox'/\'$VB_USERNAME\'/" /var/www/html/config.php
sed -i "13s/'pass'/\'$VB_PASSWORD\'/" /var/www/html/config.php
sed -i "16s/'127.0.0.1:18083'/\'$VB_SERVER_IP\'/" /var/www/html/config.php
echo "VBOXWEB_USER=$VB_USERNAME\nVBOXWEB_HOST=$VB_HOSTNAME\nVBOXWEB_PORT=$VB_PORT" > /etc/default/virtualbox
sed -i "22s/'en'/\'ru\'/" /var/www/html/config.php

Нужно в процессе выполнения скрипта вырвать из него кусок и сохранить в другой файл для дальнейшего его использования. Грубо говоря как то выделить блок текста и сохранить его в файл. как тут только масштабнее:

echo "deb http://download.virtualbox.org/virtualbox/debian stretch contrib" >> /etc/apt/sources.list


Нужно в процессе выполнения скрипта вырвать из него кусок и сохранить в другой файл для дальнейшего его использования.

Ты явно имел в виду что-то другое.

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

Огромное спасибо!!!! это то что я искал=)))

Flover
() автор топика

Вот так делать не надо:

cat /etc/apt/sources.list | grep virtualbox
if [ $? -eq 1 ]

Надо так:

if ! grep -q virtualbox /etc/apt/sources.list

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

Слишком наглядно, нужно обфусцировать.

anonymous
()
Ответ на: комментарий от spijet

Справедливости ради, полный аналог был бы если в оригинале приписано было «> /dev/null». А так, вдруг скрипт должен показывать всё нахождение слова «virtualbox» :)

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

спасибо за совет=) этот кусок скрипта ради примера взял.сам скрипт для установки virtualbox+phpvirtualbox. Переделывался под себя из какого то нерабочего и был допилен). Вот если кому интересно фул версия:(работает под дебиан 9 и дебиан 8 с минимальной установкой из dvd1 на других дистрах не тестил. Буду рад поправкам. т.к только учусь

#!/bin/bash


#
# Set up variables
#
VB_USERNAME="vbox"
VB_PASSWORD="password"
VB_EXTPACK_URL="https://download.virtualbox.org/virtualbox/5.2.6/Oracle_VM_VirtualBox_Extension_Pack-5.2.6-120293.vbox-extpack"
VB_EXTPACK_NAME="Oracle_VM_VirtualBox_Extension_Pack-5.2.6-120293.vbox-extpack"
VB_PHPVBZIP_URL="https://sourceforge.net/projects/phpvirtualbox/files/phpvirtualbox-5.0-5.zip"
VB_PHPVBZIP_NAME="phpvirtualbox.zip"
VB_PACKAGES="apache2  linux-headers-$(uname -r) virtualbox-5.2 apache2-doc bash-completion build-essential curl  php7.0 libapache2-mod-php7.0 php-xml dkms git mysql-server php-mcrypt php-mysql php-soap sudo unzip wget zip mc htop"
VB_HOSTNAME="127.0.0.1"
VB_SERVER_IP="192.168.3.198:18083"
VB_PORT="18083"
VB_VER="5.2-0"
VB_VER1="5.2"
#
# Add VirtualBox repository
#
cat /etc/apt/sources.list | grep virtualbox
if [ $? -eq 1 ]
then
	sed -i "/cdrom/d" /etc/apt/sources.list
	echo "deb http://download.virtualbox.org/virtualbox/debian stretch contrib" >> /etc/apt/sources.list
	wget https://www.virtualbox.org/download/oracle_vbox_2016.asc && apt-key add oracle_vbox_2016.asc
fi

#
# Install OS packages
#
apt-get update -y && apt-get upgrade -y && apt-get autoremove -y
apt-get -y install $VB_PACKAGES || { echo '[ERROR] Package installation failed! Exiting!' ; exit 1; }
apt-get update -y && apt-get upgrade -y && apt-get autoremove -y

#
# Prepare the phpvirtualbox server user
#
cat /etc/passwd | grep $VB_USERNAME

useradd -m $VB_USERNAME
echo  "$VB_PASSWORD\n$VB_PASSWORD" | passwd $VB_USERNAME
usermod -aG vboxusers $VB_USERNAME


#
# Wget the extension pack and phpvirtualbox resources
#
wget $VB_EXTPACK_URL
wget $VB_PHPVBZIP_URL -O $VB_PHPVBZIP_NAME

#
# Configure the virtualBox extension
#
echo y | vboxmanage extpack install --replace $VB_EXTPACK_NAME
if [ $? -eq 1 ]
then
	echo "There was an error installing the extion pack: $VB_EXTPACK_NAME"
	exit 1
fi

#
# Set up the phpvirtualbox web files
#
rm -rf /var/www/html/*
unzip -q $VB_PHPVBZIP_NAME
mv  phpvirtualbox-5.0-5/* /var/www/html/
cp /var/www/html/config.php-example /var/www/html/config.php
sed -i "12s/'vbox'/\'$VB_USERNAME\'/" /var/www/html/config.php
sed -i "13s/'pass'/\'$VB_PASSWORD\'/" /var/www/html/config.php
sed -i "16s/'127.0.0.1:18083'/\'$VB_SERVER_IP\'/" /var/www/html/config.php
echo "VBOXWEB_USER=$VB_USERNAME\nVBOXWEB_HOST=$VB_HOSTNAME\nVBOXWEB_PORT=$VB_PORT" > /etc/default/virtualbox
sed -i "22s/'en'/\'ru\'/" /var/www/html/config.php


#Fix eror about version
sed -i "17s/'5.0-5'/\'$VB_VER\'/" /var/www/html/endpoints/lib/config.php
ln -s /var/www/html/endpoints/lib/vboxweb-5.0.wsdl /var/www/html/endpoints/lib/vboxweb-$VB_VER1.wsdl
ln -s /var/www/html/endpoints/lib/vboxwebService-5.0.wsdl /var/www/html/endpoints/lib/vboxwebService-$VB_VER1.wsdl


#
# Starts the phpvirtualbox service
#
systemctl restart vboxweb-service

echo "Done!"

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