За правильность и вред нанесенный вашей психике и системе ответственности не несу.
- вручную отправить письмо с помощью telnet (прислать copy/past терминала)
$ telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 hostname ESMTP Sendmail 8.14.3/8.14.3; Mon, 1 Mar 2010 14:22:42 +0200 (EET)
ehlo lo
250-hostname Hello localhost [127.0.0.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-DELIVERBY
250 HELP
mail from: user@denn.dp.ua
250 2.1.0 user@denn.dp.ua... Sender ok
rcpt to: vasya@gmail.com
250 2.1.5 vasya@gmail.com... Recipient ok
data
354 Enter mail, end with "." on a line by itself
Hey you, don't sleep!
.
250 2.0.0 o1RJiWSr001614 Message accepted for delivery
- Написать регэксп, под который попадут следующие строки
www.mydomain.com
www.MyDomain.com
www.my-domain.com
www.my - domain.com
www.My - Domain.com
и не попадут следующие:
www.My-Domain.com
www.otherdomain.com
www.motherdomain.com
/www\.[mM]y([dD]|\-d)omain\.com/
пробел?!
- что из нижеперечисленного проматчит паттерн /w{,3}./ www.domain
ww.domain wwww.domain wwwww.domain w.domain .domain domain
Всё кроме wwww.domain wwwww.domain и domain.
- как скопировать все файлы заканчивающиеся на .txt в файлы с соотв.
началом, но заканчивающимися на .new.txt, например было file1.txt стало
file1.new.txt
Пример 9-17 Advanced Bash-Scripting Guide
cat ./rename_suffix.sh
#!/bin/sh
ARGS=2
E_BADARGS=65
if [ $# -ne "$ARGS" ]
then
echo "Use: `basename $0` old_file_suffix new_file_suffix"
exit $E_BADARGS
fi
for filename in *.$1
do
mv $filename ${filename%$1}$2
done
exit 0
./rename_suffix.sh txt new.txt
- заменить во всех .txt файлах внутри некоей директории dir (и ее поддиректориях соответственно ) URL 'http://www.mydomain.ru/' на 'http://mydomain.su/'
find ./ -name "*.txt" -exec perl -pi -e 's/www\.mydomain\.ru/mydomain\.su/g' {} \; -print
- дано дерево из директорий, поддиректорий и файлов вложенности N. Имена файлов и названия директорий - шестнадцатеричные числа. Надо удалить все файлы, которые не менялись больше недели.
find ./ -type f -mtime +7 -name "*.*" -exec rm {} \; -print
- какой из нижеприведенных хедеров неправильный:
X-Forwarded-For: 118.11.11.118
Location: index.html
Accept-Ranges: bytes
Location: index.html
- что нужно прописать в конфиг апача, чтобы URL
http://domain.com/script обрабатывался php скриптом
Добавить в httpd.conf AddType application/x-httpd-php script
- как сделать так, чтобы при отсутствии файлов index.htm и т.п. сервер НЕ показывал бы содержимое директории.
добавить в .htaccess Options -Indexes
Задача:
На хранилище есть некоторое количество бекапов, именованых по следующему
формату:
имя.ip_сервера-ГГММДД_ЧЧММСС.tgz - пример
backup.10.251.69.204-100210_150001.tgz,
набор ip адресов ограниченный, может браться из файла построчно.
Бекапы в идеале поступают ежечасно, но могут теряться
Необходимо организовать ротацию (переименование, удаление устаревших)
бекапов по принципу
1) 24 ежечасных за последние сутки, 7 дневных за неделю, 4 и/или5
недельных за месяц , 12 ежемесячных за год(где количество 24/7/4/12
приведено для примера, должно задаваться переменными)
вновь поступившие бекапы вытесняют старые.
2) переименование прозводить так:
backup.10.251.69.204-100210_140001.tgz - ежечасный, не трогаем
backup.10.251.69.204-100210_150001.tgz - ежечасный, не трогаем
daily.backup.10.251.69.204-100210_150001.tgz - дневной
weekly.backup.10.251.69.204-100210_150001.tgz - недельный
montly.backup.10.251.69.204-100210_150001.tgz - месячный
или предложить свою систему именования/хранения
3) если для определенного ip не появилось новых бекапов - т.е. например
на текущий момент у нас есть меньше 24 ежечасных, ротацию не делать,
ничего не удалять
Можно использовать bash и средства shell, в крайнем случае perl
(нежелательно), php и подобные нельзя.
Считать хранилище одноуровневым, папки использовать нельзя, перемещять
backup файлы за пределы хранилища нельзя.
Можно использовать временные файлы.
Вот такой вышел скрипт:
#!/usr/local/bin/bash
txt="./ip_list.txt" #путь к файлу с ip
path_back="/home/denn/testi" #путь к папке хранилища
var=0
hourlyMax=24 #Максимально часовых
dailyMax=7 #Максимально дневных
weeklyMax=4 #Максимально недельных
montlyMax=12 #Максимально годовых
cat $txt | while read ip; do
var=$(($var+1))
hourly[$var]=`ls $path_back | grep -e '^backup.'$ip | wc -l`
daily[$var]=`ls $path_back | grep -e '^daily.backup.'$ip | wc -l`
weekly[$var]=`ls $path_back | grep -e '^weekly.backup.'$ip | wc -l`
montly[$var]=`ls $path_back | grep -e '^montly.backup.'$ip | wc -l`
#Проверяем количество часовых
if (( "${hourly[$var]}" > "$hourlyMax" )); then
temp=$((${hourly[$var]}-$hourlyMax))
rm `ls -1rt | grep -e '^backup.'$ip | head -$temp`
fi
#Проверяем количество дневных
if (( "${daily[$var]}" > "$dailyMax" )); then
temp=$((${daily[$var]}-$dailyMax))
rm `ls -1rt | grep -e '^daily.backup.'$ip | head -$temp`
fi
#Проверяем количество недельных
if (( "${weekly[$var]}" > "$weeklyMax" )); then
temp=$((${weekly[$var]}-$weeklyMax))
rm `ls -1rt | grep -e '^weekly.backup.'$ip | head -$temp`
fi
#Проверяем количество месячных
if (( "${montly[$var]}" > "$montlyMax" )); then
temp=$((${montly[$var]}-$montlyMax))
rm `ls -1rt | grep -e '^montly.backup.'$ip | head -$temp`
fi
done
В принципе можно убрать массивы и заменить к примеру на такое:
if (( `ls $path_back | grep -e '^backup.'$ip | wc -l` > "$hourlyMax" )); then
echo "hourly result:" ${hourly[$var]} "need remove"
temp=$((`ls $path_back | grep -e '^backup.'$ip | wc -l` - $hourlyMax))
но красивее с массивом смотрится.
Ругайте :)
Ищете, где купить канаты, канаты стальные?
ОтветитьУдалитьКомпания ООО Мегапром - крупный поставщик канатов от лучших производителей на территории России.
Вся продукция сертифицирована и имеет необходимые маркировки.