Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

sh скрипты для демок

, посоветуйте как сделать
Статус пользователя Paster
сообщение 2.1.2013, 9:35
Сообщение #1


Стаж: 19 лет

Сообщений: 491
Благодарностей: 64
Полезность: 139

Привет всем!
Была темка, где есть php скрипт но он не подходит.
Мне нужены обычные sh скритпы, если возможно через них выполнять задачи сжатия и перемещения.

HLTV на ВЕБ тазике пишут демки к примеру в папки:
Код
/home/hltv/hltv/cstrike
/home/hltv/hltv3/cstrike
/home/hltv/hltv4/cstrike


форматы файла такие:
DUST-1208232133-de_dust2_2x2.dem

Задачи для скрипта / ов:
1. в выше перечисленных папках выполнить сжатие демок в формат .zip
2. демки к-е еще пушутся не сжимать.
3. перемещать все демки в одну папку к примеру в /home/hltv/demos/
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя 330863
сообщение 2.1.2013, 10:23
Сообщение #2


Стаж: 16 лет

Сообщений: 4358
Благодарностей: 1079
Полезность: 497

Paster,
цена ?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Breakt
сообщение 2.1.2013, 13:08
Сообщение #3


Стаж: 16 лет

Сообщений: 149
Благодарностей: 15
Полезность: 88

Цитата(Paster @ 2.1.2013, 10:35) *
Привет всем!
Была темка, где есть php скрипт но он не подходит.
Мне нужены обычные sh скритпы, если возможно через них выполнять задачи сжатия и перемещения.

HLTV на ВЕБ тазике пишут демки к примеру в папки:
Код
/home/hltv/hltv/cstrike
/home/hltv/hltv3/cstrike
/home/hltv/hltv4/cstrike


форматы файла такие:
DUST-1208232133-de_dust2_2x2.dem

Задачи для скрипта / ов:
1. в выше перечисленных папках выполнить сжатие демок в формат .zip
2. демки к-е еще пушутся не сжимать.
3. перемещать все демки в одну папку к примеру в /home/hltv/demos/

А гугл тебе на что? Или ты реально хочешь заказать?

Цитата(330863 @ 2.1.2013, 11:23) *
Paster,
цена ?

Ахахах, легких денег захотелось :D
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Paster
сообщение 2.1.2013, 14:44
Сообщение #4


Стаж: 19 лет

Сообщений: 491
Благодарностей: 64
Полезность: 139

Ну конечно гуглить можно, но потребуется время.
Возможно уже есть готовое решение, зачем изобритать то, что уже есть.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Fire
сообщение 2.1.2013, 15:07
Сообщение #5


Иконка группы

Стаж: 17 лет

Сообщений: 2201
Благодарностей: 2227
Полезность: 963

Готовых нет, но можно написать, опять-же, за $


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Paster
сообщение 2.1.2013, 15:42
Сообщение #6


Стаж: 19 лет

Сообщений: 491
Благодарностей: 64
Полезность: 139

Вот нашел скрипт, но у меня он просто удаляет старые демки, но не переносит в сжатом виде. Надо поправить его...
Прикрепленные файлы:
Прикрепленный файл  demos.zip ( 596 байт ) Кол-во скачиваний: 21
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Breakt
сообщение 2.1.2013, 16:39
Сообщение #7


Стаж: 16 лет

Сообщений: 149
Благодарностей: 15
Полезность: 88

Цитата(Fire @ 2.1.2013, 15:07) *
Готовых нет, но можно написать, опять-же, за $

Не вводи людей в заблуждение.

Цитата(Paster @ 2.1.2013, 15:42) *
Вот нашел скрипт, но у меня он просто удаляет старые демки, но не переносит в сжатом виде. Надо поправить его...

Черкани в скайп поделюсь. Либо позже тут выложу под спойлер. Надеюсь ОС linux интересует.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Breakt
сообщение 2.1.2013, 19:46
Сообщение #8


Стаж: 16 лет

Сообщений: 149
Благодарностей: 15
Полезность: 88

Цитата(Fire @ 2.1.2013, 15:07) *
Готовых нет, но можно написать, опять-же, за $

Дабы не быть пустозвоном выкладываю скрипт. Сразу говорю скрипт не мой, писал его не я.
Scriptname.sh

#!/bin/bash
##
## Скрипт архивирует демки, складывает в отдельный
## каталог и удаляет старые [c] CL0NE
##

PATH_TO_DEMOS[0]="/полный_путь_до_демок/";
PATH_TO_DEMOS[1]="/полный_путь_до_демок/";
PATH_TO_DEMOS[1]="/полный_путь_до_демок/";
OUT_PATH[0]="/полный_путь_до_места_куда_вы_хотите_переместить_демки/";
OUT_PATH[1]="/полный_путь_до_места_куда_вы_хотите_переместить_демки/";
OUT_PATH[2]="/полный_путь_до_места_куда_вы_хотите_переместить_демки/";
OLDER_THAN=21;

IFS=$'\n'

echo
echo "[ Removing old and archiving new demos ]"
echo

for (( i = 0; i < "${#PATH_TO_DEMOS[@]}"; ++i));
do
DIR=${PATH_TO_DEMOS[$i]};
OUT=${OUT_PATH[$i]};

echo "Dir: $DIR";
echo "Out: $OUT";

find "$DIR" -name '*.dem' -mtime +$OLDER_THAN -exec rm {} \;
find "$OUT" -name '*.gz' -mtime +$OLDER_THAN -exec rm {} \;

echo "Cleaned";

mkdir -p $OUT

for file in `find "$DIR" -mmin +5 -name '*.dem' -print`
do
gzip -9 $file
echo " `basename $file`"
mv -ft "$OUT" "$file".gz
done

echo "Archived";
echo

done

##
##

В данном скрипте разобрана ситуация когда имеется 3 сервера на которых пишутся демки, скрипт обрабатывает т.е. архивирует и удаляет исходники из директории в которой они были, а архивы переносит в указаную вами директорию.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 3 раз
   + Цитировать сообщение
Статус пользователя camic
сообщение 10.1.2013, 12:34
Сообщение #9
Стаж: 14 лет

Сообщений: 13
Благодарностей: 1
Полезность: 0

не хватает проверок ) , а так скрипт нормальный , можно развить тему на складирование по месецам и числам ftp://95.31.211.30 извиняюсь за бардак

Отредактировал: camic, - 10.1.2013, 12:35
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Breakt
сообщение 10.1.2013, 12:55
Сообщение #10


Стаж: 16 лет

Сообщений: 149
Благодарностей: 15
Полезность: 88

Цитата(camic @ 10.1.2013, 12:34) *
не хватает проверок ) , а так скрипт нормальный , можно развить тему на складирование по месецам и числам ftp://95.31.211.30 извиняюсь за бардак

Я использую пхп скрипт там указывается дата и время, поэтому надобности на разбиение по числа и месяцам не вижу:)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя camic
сообщение 10.1.2013, 12:58
Сообщение #11
Стаж: 14 лет

Сообщений: 13
Благодарностей: 1
Полезность: 0

Цитата(Breakt @ 10.1.2013, 13:55) *
Я использую пхп скрипт там указывается дата и время, поэтому надобности на разбиение по числа и месяцам не вижу:)

пхп не поделитесь ? ))
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Breakt
сообщение 10.1.2013, 15:56
Сообщение #12


Стаж: 16 лет

Сообщений: 149
Благодарностей: 15
Полезность: 88

Цитата(camic @ 10.1.2013, 13:58) *
пхп не поделитесь ? ))

Чуть позже выложу.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя f1nik
сообщение 11.1.2013, 14:04
Сообщение #13


Иконка группы

Стаж: 15 лет

Сообщений: 1862
Благодарностей: 932
Полезность: 1010

Цитата(Breakt @ 10.1.2013, 15:56) *
Чуть позже выложу.

Тоже интересно... )))
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Breakt
сообщение 11.1.2013, 15:29
Сообщение #14


Стаж: 16 лет

Сообщений: 149
Благодарностей: 15
Полезность: 88

Цитата(f1nik @ 11.1.2013, 15:04) *
Тоже интересно... )))

Потерпите, пока занят малость, как зайду на тачку сдерну его и закину:)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Breakt
сообщение 11.1.2013, 15:29
Сообщение #15


Стаж: 16 лет

Сообщений: 149
Благодарностей: 15
Полезность: 88

Цитата(f1nik @ 11.1.2013, 15:04) *
Тоже интересно... )))

Потерпите, пока занят малость, как зайду на тачку сдерну его и закину:)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Breakt
сообщение 19.3.2013, 10:28
Сообщение #16


Стаж: 16 лет

Сообщений: 149
Благодарностей: 15
Полезность: 88

Был очень занят вот выкладываю PHP скрипт извините что так долго.
Index.php
<?php
/*
Simple "HLTV Demos archive" databaseless script
Copyright © 2011 CL0NE

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

#
# Configure server archives
#
$servers = array (
'classic-1' => array(
"title" => "[CL0NE] Classic #1",
"prefix" => "hltv"
),
'classic-2' => array(
"title" => "[CL0NE] Classic #2",
"prefix" => "cs"
)
);

# Size in bytes
function format_size($size, $round = 0)
{
$sizes = array('B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB');

for ($i=0; $size > 1024 && isset($sizes[$i+1]); $i++)
$size /= 1024;

return round($size, $round)." ".$sizes[$i];
}

function browse($path)
{
global $servers;
$count = 0;
$data = Array();
$prefix = $servers[$path]['prefix'];
$prefix_sz = strlen($prefix) + 1;
$offsets = array (
year => $prefix_sz,
month => $prefix_sz + 2,
day => $prefix_sz + 4,
hour => $prefix_sz + 6,
minute => $prefix_sz + 8,
map => $prefix_sz + 11
);
if(is_dir($path))
if($dir = opendir($path))
{
while($file = readdir($dir))
{
if (!is_dir($file) && $file[0] != '.')
{
$name_end = strrpos($file, ".dem");
$name_end = $name_end === FALSE ? strrpos($file, ".gz") : $name_end;

if($name_end === FALSE)
continue;

$tmpfilesize = @filesize($path == '.' ? $file : $path.'/'.$file);

$data[$count][year] = substr($file, $offsets[year], 2);
$data[$count][month] = substr($file, $offsets[month], 2);
$data[$count][day] = substr($file, $offsets[day], 2);
$data[$count][hour] = substr($file, $offsets[hour], 2);
$data[$count][minute] = substr($file, $offsets[minute], 2);
$data[$count][map] = substr($file, $offsets[map], $name_end - $offsets[map]);
$data[$count][file] = $file;
$data[$count][size] = format_size($tmpfilesize);
$data[$count][path] = $path == '.' ? $file : $path.'/'.$file;

$count++;
}
}
closedir($dir);
}

echo '<table class="main" cellspacing="0" cellpadding="2">
<tr>
<th style="width: 10%; padding-left: 10px;"> Date</th>
<th style="width: 10%;"> Time</th>
<th style="width: 25%;"> Map</th>
<th style="width: 15%;"> Size</th>
<th style=""> Link</th>
</tr>';


if(count($data) > 0)
{
sort($data);
$data = array_reverse($data);
$ll = 0;
foreach($data as $field)
{
echo '<tr'.($ll?' class="ll"':'').'>
<td>'.$field[day].'.'.$field[month].'.'.$field[year].'</td>
<td>'.$field[hour].':'.$field[minute].'</td>
<td>'.$field[map].'</td>
<td>'.$field[size].'</td>
<td><a href="'.$field[path].'">'.$field[file].'</a></td>
</tr>';
$ll = !$ll;
}
}
else
{
echo '<tr><td class="ll" colspan="5" align="center">Нет демо</td></tr>';
}
echo '</table>';
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
<style type="text/css">
body
{
padding: 0px;
margin: 0px;
text-align: center;
background-color: #1F1F1F;
color: #6BA9BF;
font-size: 9pt;
font-family: sans-serif;
}
#wrapper
{
margin: 0 auto;
padding: 0em 0.5em;
max-width: 960px;
min-width: 760px;
width: auto !important;
}
ul.menu
{
list-style-type: none;
margin: 0em;
display: inline;
font-size: 11pt;
}
ul.menu li
{
padding-bottom: 1px;
border-right: solid 1px #313A3F;
border-bottom: solid 1px #313A3F;
display: inline-block;
float: left;
}
ul.menu li:hover
{
border-bottom: solid 1px #6BA9BF;
padding-bottom: 0px;
}
ul.menu li a
{
display: block;
padding: 3px 1em;
}
ul.menu a:hover
{
padding: 3px 1em 4px 1em;
background-color: #313A3F;
}
a
{
color: #6BA9BF !important;
text-decoration:none;
}
h1.title
{
clear: left;
text-shadow: 1px 1px 1px #666, -1px -1px 1px #000;
}
.main
{
width: 99%;
text-align: left;
border: #313A3F solid 1px;
}
.main th
{
border-bottom: solid 2px #313A3F;
color: #4F6F7F;
font-weight: normal;
background-color: #262C2F;
background: url('bgth.gif') repeat-x scroll center bottom #222222;
color: #EFEFEF;
text-shadow: 1px 1px 1px #555, -1px -1px 1px #000;
}
.main tr:hover
{
background-color: #272F2F;
}
.ll
{
background-color: #313A3F;
}
#footer
{
background-color: #272F2F;
border: 1px solid #3f3f3f;
padding: 1em;
margin: 0em 0em 0.25em 0em;
}
</style>
</head>
<body>
<div id="wrapper" align="center">
<div style="border: green solid 0px; padding-bottom: 1em;">
<ul class="menu">
<li style="border-left: solid 3px #3f6fEF;"><a href="http://127.0.0.1/">На сайт</a></li>
<li><a href="http://127.0.0.1/">Банлист</a></li>
<li><a href="http://google.com./">В гугл?</a></li>
</ul>
<h1 class="title">HLTV Demos</h1>
</div>
<div style="min-height: 450px; padding-bottom: 1em;">
<form action="" method="get">
<span style="display: inline-block; font-weight: bold; margin-right: 0.5em; font-size: 1.1em;">Server: </span>
<select name="server">
<?php
foreach ($servers as $key => $value)
{
echo '<option'.( $key == $_GET['server'] ? ' selected' : '').' value="'.$key.'">'.$value['title'].'</option>';
}
?>
</select>
<button type="submit">Go</button>
</form>
<?php
if( isset($servers[$_GET['server']]) )
browse($_GET['server']);
?>
</div>
<div id="footer">HLTV demos archive. [C] CL0NE</div>
</div>
</body>
</html>
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
Статус пользователя CL0NE [ua]
сообщение 12.10.2013, 22:33
Сообщение #17
Стаж: 16 лет

Сообщений: 33
Благодарностей: 19
Полезность: 438

Между прочим, источник - https://gist.github.com/1117172 Возможно, конечно, стоило сделать это отдельным репозитарием.
Цитата
я ни в коем случае не против распространения, я только за :)

И момент для тех, кто желает заливать/скачивать демо на/с фтп
Есть два варианта:
а) использовать curlftpfs
плюсы: практически без изменений будет работать скрипт (пути прописать + настроить монтирование ftp по curlftpfs)
минусы: ставить пакет из репозитария, возможно, кто-то сочтет нецелесообразным

б) либо самому допилить нужный функционал, либо дождаться, когда у меня появится время сделать это.
Примечание: Разница во времени на веб-сервере и фтп в любом случае может сломать одну вещь: не трогать демки, которые на данный момент пишутся.

Для пользователей Windows также есть замена bash-скрипту на jscript, в gist-е он лежит под именем arch_mv.js
Требования - установленный 7zip, либо его версия для командной строки (в таком случае следует либо на 55й строке 7z заменить на 7za, либо переименовать исполняемый файл 7za в 7z). Путь к исполняемому файлу должен быть прописан в PATH. Скрипт следует запускать командой
Код
cscript /nologo arch_mv.js

(эту же команду с указанием пути добавляем в планировщик для автоматизации процесса)


Отредактировал: CL0NE [ua], - 12.10.2013, 22:37
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
Статус пользователя drivemaster
сообщение 16.10.2013, 14:02
Сообщение #18


Стаж: 17 лет

Сообщений: 266
Благодарностей: 79
Полезность: 246

Цитата(CL0NE [ua] @ 12.10.2013, 23:33) *
Между прочим, источник - https://gist.github.com/1117172 Возможно, конечно, стоило сделать это отдельным репозитарием.

И момент для тех, кто желает заливать/скачивать демо на/с фтп
Есть два варианта:
а) использовать curlftpfs
плюсы: практически без изменений будет работать скрипт (пути прописать + настроить монтирование ftp по curlftpfs)
минусы: ставить пакет из репозитария, возможно, кто-то сочтет нецелесообразным

б) либо самому допилить нужный функционал, либо дождаться, когда у меня появится время сделать это.
Примечание: Разница во времени на веб-сервере и фтп в любом случае может сломать одну вещь: не трогать демки, которые на данный момент пишутся.

Для пользователей Windows также есть замена bash-скрипту на jscript, в gist-е он лежит под именем arch_mv.js
Требования - установленный 7zip, либо его версия для командной строки (в таком случае следует либо на 55й строке 7z заменить на 7za, либо переименовать исполняемый файл 7za в 7z). Путь к исполняемому файлу должен быть прописан в PATH. Скрипт следует запускать командой
Код
cscript /nologo arch_mv.js

(эту же команду с указанием пути добавляем в планировщик для автоматизации процесса)


Спасибо, наконец-то нашёл скрипт с пастраничным выводом, а то к своему никак не мог приделать! clapping.gif
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: