bash manipulating string

FileName="/var/www/html/index.html"
echo "${FileName}"
/var/www/html/index.html
 
echo "${FileName%/*}"
/var/www/html
 
echo "${FileName##*/}"
index.html
 
TmpVal=$(echo "${FileName%.*}")
echo "${TmpVal##*/}"
index
 
echo "${FileName//\//+}"
+var+www+html+index.html

Description…

  • ${variable%pattern} removes first pattern on the right
  • ${variable%%pattern} removes last pattern on the right
  • ${variable#pattern} removes first pattern on the left
  • ${variable##pattern} removes last pattern on the left
  • ${variable/src/pattern} replace all entry

https://www.tldp.org/LDP/abs/html/string-manipulation.html

2019/03/27 · Oleg Zvezdo4kin · 0 комментариев (-я)

Bash: Поиск и операции с файлами по выборке имен из БД

Поиск и перемещение записей (имя только UNIQUEID) по данным из CDR

#!/bin/bash
 
#Назначим переменные из аргументов
db=$1
col=$2
num=$3
src_dir=$4
dst_dir=$5
 
#Если кол-во аргументов меньше 5-ти выведем короткую справку
if [ "$#" -ne 5 ]; then
    echo -e "\n\e[39m#######Usage:#######"
 
    echo -e "\n\e[39mFiles names select  recordingfile \e[39mfrom \e[33mdatabase_name \e[39mwhere \e[33mcolumn \e[39m= \e[33mphone_number \n \e[39mwill be moved from  \e[33msource_directory  \e[39mto \e[33mdest_directory."
 
    echo -e "\n\e[39mPass arguments: \n \e[33mdatabase_name \n column\e[39m (dst || src) \n \e[33mpnone_number \n source_directory\e[39m (e.g /home/asterisk/monitor/recmp3) \n \e[33mdest_directory"
 
    echo -e "\n\e[39mExample: \e[32m./delete_record_by_db_select.sh asteriskcdrdb  src 211 /var/spool/asterisk/monitor /root/scripts"
    exit
fi
#Назначим переменную с текущей датой
s=$(date +%d-%m-%y_%H:%M:%S)
#Назначим переменную для имени файла, в который будут сохраняться данные выборки
d=$db-$num-$col-$s
 
 
user="root"
pass=""
#SQL запрос: выбрать уникальные имена файлов где колонка = номер из аргументов.
sqlread="select distinct(recordingfile) from $db.cdr where $col = '$num'"
 
RES=`mysql -h127.0.0.1 -u $user  --skip-column-names --default-character-set=utf8 $db -e "$sqlread"`
 
#Сохраним полученные данные в текстовый файл.
printf "$RES" >> $d
echo "" >> $d
 
#Создадим директорию для перемещения файлов (если нужно переместить)
#mkdir $dst_dir/$db-$num-$col
 
#Читаем файл с выборкой построчно, как массив
while read recordingfile; do
 
#Если имя файла содержит слеш, заменим его на тире
rec="$num-${recordingfile//\//-}"
 
#Если файл существует, выполняем какие-либо операции с ним. В обратном случае выводим сообщение.
if [ -f "$src_dir/$recordingfile" ]; then
    #mv -f $src_dir/$recordingfile  $dst_dir/$db-$num-$col/$rec
    echo -e "\e[39mFile \e[32m$src_dir/$recordingfile \e[39mMoved to  \e[32m$dst_dir/$db-$num-$col/$rec"
else
    echo -e "\e[39mNo such file - \e[31m$src_dir/$recordingfile \e[39mfor  \e[33m${rec%-*}"
fi
 
done < $d

пример:

 ./delete_record_by_db_select.sh asteriskcdrdb  src 211 /var/spool/asterisk/monitor /root/scripts

asteriskcdrdb - бд в которой ищем информацию о файлах (в данном примере это колонка recordingfile из 'asteriskcdrdb.cdr)

src или dst - колонка по которой выбираем звонки определенного номера исходящие или входящие соответственно

211 - номер для которого ищем файлы

/var/spool/asterisk/monitor - директория в которой находятся файлы

/root/scripts - директория в которую мы хотим переместить файлы

в тестовом режиме закомментируйте строки при помощи #:

mkdir $dst_dir/$db-$num-$col

и

mv -f $src_dir/$recordingfile  $dst_dir/$db-$num-$col/$rec

В этом случае скрипт просто выведет список найденных файлов (если были найдены)

или сообщит, что файлы не были найдены

https://www.tldp.org/LDP/abs/html/string-manipulation.html

https://misc.flogisoft.com/bash/tip_colors_and_formatting

2019/03/26 · Oleg Zvezdo4kin · 0 комментариев (-я)

postgres alter sequence

  • How to reset sequence in postgres and fill id column with new data?
ALTER SEQUENCE seq restart WITH 5;
UPDATE t SET id = NEXTVAL('seq');

postgres select ... from One select from Another

   insert into sip_profiles (profile,type,name,value,enable,active) 
(select 'external5060', type, name, value, enable, active from sip_profiles where profile='external');
2019/03/22 · Oleg Zvezdo4kin · 0 комментариев (-я)

debian 9 VPN pptp

/etc/ppp/chap-secrets

SERVER\\USER PPTP PASS *

/etc/ppp/peers/VPNNAME

pty "/usr/sbin/pptp SERVER --nolaunchpppd"
name SERVER\\USER
remotename PPTP
require-mppe-128
file /etc/ppp/options.pptp
ipparam VPNNAME

vpn start

 pon VPNNAME

vpn stop

 poff VPNNAME

vpn test

 pon VPNNAME debug dump logfd 2 nodetach

/etc/network/interfaces

auto ppp0
iface ppp0 inet ppp
        provider VPNNAME

ip route
/etc/ppp/ip-up.d/NAME-route

#!/bin/bash
route add -net 192.168.0.0/16 dev ppp0
 chmod +x /etc/ppp/ip-up.d/NAME-route

Start if interface down by cron

#!/bin/bash
 
HOST=enter_check_ip
 
DATE=`date`
PINGRES=`ping -c 2 $HOST`
PLOSS=`echo $PINGRES : | grep -oP '\d+(?=% packet loss)'`
 
echo "$DATE : Loss Result : $PLOSS"
 
if [ "100" -eq "$PLOSS" ]; then
    echo "$DATE : Starting : $HOST"
    /usr/bin/pon lat updetach
    echo "$DATE : Now running : $HOST"
else
    echo "$DATE : Already running : $HOST"
fi

crontab -e

*/1  * * * * cd /root/cron && ./pptp_start.sh >> /var/log/pptp_pinger.log 2>&1

iptables

ACCEPT     47   --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:1723
2019/03/12 · Oleg Zvezdo4kin · 0 комментариев (-я)

apache_httpd_reverse_proxy

Check

 # httpd -M | grep proxy
 proxy_module (shared)
 proxy_ajp_module (shared)
 proxy_balancer_module (shared)
 proxy_connect_module (shared)
 proxy_express_module (shared)
 proxy_fcgi_module (shared)
 proxy_fdpass_module (shared)
 proxy_ftp_module (shared)
 proxy_http_module (shared)
 proxy_scgi_module (shared)
 proxy_wstunnel_module (shared)
 # httpd -M | grep lbmethod_byrequests
 lbmethod_byrequests_module (shared)
 # cat /etc/httpd/conf.modules.d/00-proxy.conf
# This file configures all the proxy modules:
LoadModule proxy_module modules/mod_proxy.so
LoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so
LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so
LoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.so
LoadModule lbmethod_heartbeat_module modules/mod_lbmethod_heartbeat.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_express_module modules/mod_proxy_express.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
LoadModule proxy_fdpass_module modules/mod_proxy_fdpass.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_scgi_module modules/mod_proxy_scgi.so
LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so

virtual host

/etc/httpd/conf.d/default-site.conf

<VirtualHost *:80>
    ProxyPreserveHost On
 
    ProxyPass / http://192.168.0.1:80/
    ProxyPassReverse / http://192.168.0.1:80/
</VirtualHost>
 systemctl restart http
2019/03/01 · Oleg Zvezdo4kin · 0 комментариев (-я)

<< Новые записи | Предыдущие записи >>

Только авторизованные участники могут оставлять комментарии.
  • blog.txt
  • Последние изменения: 2019/03/27