Разные заметки

четверг, 20 мая 2010 г.

Использование комманд diff и patch

$diff file1 /new/file2

77d76 - удалит строку 77 в файле file1 чтобы получить аналог file2

186c186
< { prn2f("\tDump ERROR!\n");}
---
> { prn2f("Dump ERROR!\n");}

замена 186 строки file1 (< { prn2f("\tDump ERROR!\n");})
на 186 строку file2 (> { prn2f("Dump ERROR!\n");})

Когда используется "c", номера строк слева - это строки в оригинальном файле, которые надо заменить строками, находящимися в патче, а номера строк справа - это строки, которые должны быть в пропатченном файле.

Когда используется "a", номер слева может быть только номером одной строки, который показывает, где надо добавить строку в пропатченном файле, а номера строк справа - это строки, которые должны быть в пропатченном файле.

Когда используется "d", номера строк слева - это строки, которые надо удалить, чтобы получить пропатченную версию файла, а номер строки справа может быть только номером одной строки, который показывает где будут строки в пропатченном файле, если они не будут удалены.


Знак "<" означает, что патч должен удалить символы после этого знака, а знак ">" означает, что символы после этого знака надо добавить. Когда надо заменить строки ("c" между номерами строк), вы увидите оба знака: и "<", и ">". Когда надо добавить строку ("a" между номерами строк), вы увидите только знак ">", а когда надо удалить строку ("d" между номерами строк), вы увидите только знак "<". Строка "\ No newline at end of file" появилась из-за того, что я не не нажал enter после того как набрал слова. Считается хорошим тоном заканчивать текстовый файл пустой строкой. Некоторым программам она необходима для работы.


$ diff file1 /new/file2 > patch.now

И затем применить патч:
$ patch file1 -i patch.now -o file1.patching



Если все прошло хорошо, должен получиться файл, идентичный обновленному. Вы можете убедиться в этом, используя команду diff с опцией "-s":
 $ diff -s file1.patching /new/file2 
Файлы file1.patching и /new/file2 идентичны 

Оригинал http://www.ylsoftware.com/news/243

среда, 19 мая 2010 г.

BASH замена символов в файле

Для замены "a" на "A" (только первые встречающиеся буквы в строке):
$ sed 's/a/A/' имя файла

и с сохранением результата
$ sed 's/a/A/' имя файла > имя файла2

Для замены "a" на "A" (весь текст):
$ sed 's/a/A/g' имя файла

и с сохранением результата
$ sed 's/a/A/g' имя файла > имя файла2

вторник, 18 мая 2010 г.

Perl перенаправление ввода-вывода

#!/usr/bin/perl
### ПЕРЕМЕННЫЕ
$log="log.log";
$out="out.dat";
$err="err.dat";
###
#system ("rm $out $log $err");
 

### Сохраняем стандартный вывод и вывод ошибок
open(SAVEOUT, ">&STDOUT");
open(SAVEERR, ">&STDERR");
 

### Открываем файл для записи
open (LOG,"> $log") or die "do not open $log!!!\n";
 
### Процедура вывода в файл
sub prn2f {
        $param =$_[0];
        select (LOG); $|=1;
        print $param;
}
 
### Процедура вывода в изначальный STDOUT
sub prn2std {
        $param =$_[0];
        select (SAVEOUT); $|=1;
        print $param;
        select (LOG); $|=1;
}
 
### Процедура вывода в изначальный STDERR
sub prn2err {
        $param =$_[0];
        select (STDERR); $|=1;
        print $param;
        select (LOG); $|=1;
}
### Перенаправляем STDOUT и STDERR в файлы
sub std2file {
        open (STDOUT, "> $out") or die "do not forward STDOUT to $out...\n";
        open (STDERR, "> $err") or die "do not forward STDERR to $err....\n";
        select(STDERR); $| = 1; # отключаем буферизацию
        select(STDOUT); $| = 1; # отключаем буферизацию


### Восстанавливаем вывод
sub std2std {
        open(STDOUT, ">&SAVEOUT");
        open(STDERR, ">&SAVEERR");
}


### НАЧАЛО   ПРИМЕРА
prn2std ("Вывод в стандартную консоль\n");
prn2f ("Вывод в файл\n");
prn2err("Вывод в поток ошибок\n");

std2file();
prn2std ("Вывод в стандартную консоль\n");
prn2f ("Вывод в файл\n");
prn2err("Вывод в поток ошибок\n");

std2std();

### КОНЕЦ
__END__

суббота, 15 мая 2010 г.

SSH доступ без пароля

Создаем открытый и закрытый ключ нашей локальной системы (с которой хотим подключаться к серверу):
$ ssh-keygen -t dsa –b 1024

Приватный ключ сохраняется в ~/.ssh/id_dsa или ~/.ssh/id_rsa, а публичный в ~/.ssh/id_dsa.pub или ~/.ssh/id_rsa.pub (для ключей DSA и RSA соответственно).

Для включения аутентификации по ключам публичный ключ должен быть помещен в файл ~/.ssh/authorized_keys на компьютер К КОТОРОМУ мы собираемся подключаться без пароля.

Копируем ключ на удаленный компьютер. Любыми безопасными методами.
Например:
$ scp ~/.ssh/id_rsa.pub user@(ip-адрес):~/.ssh/authorized_keys

Спросит пароль пользователя user.


Если используем ключи RSA то добавляем в файл authorized_keys:
$ cat id_rsa.pub >> authorized_keys

Если используем ключи DSA то добавляем в файл authorized_keys:
$ cat id_dsa.pub >> authorized_keys2



Настраиваем права доступа, хост зеркало:
$ chmod 700 ~/.ssh
$ chmod 600 authorized_keys 


Проверяем соединение без пароля:
ssh -i ~/.ssh/id_dsa -p22 user@(ip-адрес)

четверг, 29 апреля 2010 г.

Chmod файлам и папкам

Требовалось назначить минимальные права на все содержимое каталога (каталогам 755, файлам 644 ).

find ./path -type f -exec chmod 644 {} \;
find ./path -type d -exec chmod 755 {} \;

понедельник, 26 апреля 2010 г.

Сервер терминалов Windows 2008, 1C и wtware

http://interface31.ru/tech_it/2009/09/windows-server-2008-novie-vozmozhnosti-sluzhb-terminalov.html

http://interface31.ru/tech_it/2009/10/1s-predpriyatie-77-osobennosti-raboty-v-windows-7-vista.html

а это так.... для другого дела http://interface31.ru/tech_it/2009/11/linux-nastrojka-routera-nat-dhcp-squid.html

Jabber server OPENFIRE

Скачиваем отсюда http://www.igniterealtime.org/downloads/index.jsp deb-пакет.
Ставим как обычно:
dpkg -i <имя>.deb

Если чего нехватает - будет ругаться на неудовлетворенные зависимости.
Тогда:
aptitude -f install

Заходим на адрес броузером: https://<айпи>:9091 и настравиваем сервер в режиме web-setup.

Запоминаем пароль. Входим на сервер и производим необходимые настройки сервиса.

Дополнительные сведения:
настройка http://www.tux.in.ua/articles/383
много http://forum.ru-board.com/topic.cgi?forum=8&topic=27991&start=2100

четверг, 22 апреля 2010 г.

Полный бэкап Linux системы

Для начала заходим в консоль из под рута, затем идём в корень системы и соответственно тарим все данные:

sudo su
cd /
tar jcvpf sys_backup.tar.bz2 --exclude=/proc --exclude=/lost+found --exclude=/sys_backup.tar.bz2 --exclude=/mnt --exclude=/sys /


Если выполнять в screen то можно мониторить состояние в другом окне
watch -d -n2 "ls -sh | sort -r"

потом сливаем файл куда надо и спим спокойно.