Архив для ‘ Scripts ’ Категории

ssk-keygen

ssh-keygen -t dsa

Оставьте папку по-умолчанию, а пароль сделайте пустым.
Эта команда должна создать в папке ~/.ssh(по умолчанию) два файла — private и public key. private предназначается для локальной машины, pub отправляется на удаленный.

Теперь копируем private key в папку /root/.ssh, чтобы пользователь root так мог пользоваться им

$ cd ~/.ssh
$ sudo mkdir /root/.ssh
$ sudo cp id_dsa /root/.ssh

Теперь надо скопировать public key на удаленную машину, с которой мы хотим копировать данные. Предварительно создайте пользователя backup на удаленной машине(команда adduser). Не забудьте дать этому пользователю права на чтение каталогов, которые вы хотите копировать.

$ cat ~/.ssh/id_dsa.pub | ssh backup@remotehost.ru «cat >> ~/.ssh/authorized_keys»

команды systemd

http://tlhp.cf/systemd-in-action-part-2/

Краткий список основных команд для ZFS

$ man zpool
$ man zfs
Справка по структуре команд и их параметрам

$ su
Password:
# cd /
# mkfile 100m disk1 disk2 disk3 disk5
# mkfile 50m disk4
# ls -l disk*
-rw——T 1 root root 104857600 Sep 11 12:15 disk1
-rw——T 1 root root 104857600 Sep 11 12:15 disk2
-rw——T 1 root root 104857600 Sep 11 12:15 disk3
-rw——T 1 root root 52428800 Sep 11 12:15 disk4
-rw——T 1 root root 104857600 Sep 11 12:15 disk5
Создать несколько «виртуальных устройств» (vdevs как описано в документации к zpool). Они также могут быть реальными разделами диска, если таковые доступны.

# zpool create myzfs /disk1 /disk2
# zpool list
NAME SIZE USED AVAIL CAP HEALTH ALTROOT
myzfs 191M 94K 191M 0% ONLINE —
Создать хранилище (пул устройств) и проверить его размер и использование.

# zpool status -v
pool: myzfs
state: ONLINE
scrub: none requested
config:NAME STATE READ WRITE CKSUM
myzfs ONLINE 0 0 0
/disk1 ONLINE 0 0 0
/disk2 ONLINE 0 0 0errors: No known data errors
Более детальная информация о хранилище.

# zpool destroy myzfs
# zpool list
no pools available
Удалить ZFS пул

# zpool create myzfs mirror /disk1 /disk4
invalid vdev specification
use ‘-f’ to override the following errors:
mirror contains devices of different sizes
При попытке создания пула, vdevs которого имеют разичный размер, возникнет ошибка.
Если использовать флаг ‘-f’, то пул создастся, но размер будет соответствовать меньшему устройству.

# zpool create myzfs mirror /disk1 /disk2 /disk3
# zpool list
NAME SIZE USED AVAIL CAP HEALTH ALTROOT
myzfs 95.5M 112K 95.4M 0% ONLINE —
# zpool status -v
pool: myzfs
state: ONLINE
scrub: none requested
config:NAME STATE READ WRITE CKSUM
myzfs ONLINE 0 0 0
mirror ONLINE 0 0 0
/disk1 ONLINE 0 0 0
/disk2 ONLINE 0 0 0
/disk3 ONLINE 0 0 0errors: No known data errors
Создать «зеркалируемое» хранилище. В данном случае хранилище зеркалируется 3 раза.

# zpool detach myzfs /disk3
# zpool status -v
pool: myzfs
state: ONLINE
scrub: none requested
config:NAME STATE READ WRITE CKSUM
myzfs ONLINE 0 0 0
mirror ONLINE 0 0 0
/disk1 ONLINE 0 0 0
/disk2 ONLINE 0 0 0errors: No known data errors
Исключить устройство из пула.

# zpool attach myzfs /disk1 /disk3
# zpool status -v
pool: myzfs
state: ONLINE
scrub: resilver completed with 0 errors on Tue Sep 11 13:31:49 2007
config:NAME STATE READ WRITE CKSUM
myzfs ONLINE 0 0 0
mirror ONLINE 0 0 0
/disk1 ONLINE 0 0 0
/disk2 ONLINE 0 0 0
/disk3 ONLINE 0 0 0errors: No known data errors
Добавляем устройство в пул. В этом случае мы создадим зеркало, если его до сих пор не было, а если
было, то в зеркале будет 3 устройства.

# zpool remove myzfs /disk3
cannot remove /disk3: only inactive hot spares can be removed
# zpool detach myzfs /disk3
Попытка удалить устройство из пула.
В данном случае устройство используется в составе зеркала, поэтому надо применить команду «zpool detach».

# zpool add myzfs spare /disk3
# zpool status -v
pool: myzfs
state: ONLINE
scrub: none requested
config:NAME STATE READ WRITE CKSUM
myzfs ONLINE 0 0 0
mirror ONLINE 0 0 0
/disk1 ONLINE 0 0 0
/disk2 ONLINE 0 0 0
spares
/disk3 AVAILerrors: No known data errors
Добавление диска горячей замены к пулу.

# zpool remove myzfs /disk3
# zpool status -v
pool: myzfs
state: ONLINE
scrub: none requested
config:NAME STATE READ WRITE CKSUM
myzfs ONLINE 0 0 0
mirror ONLINE 0 0 0
/disk1 ONLINE 0 0 0
/disk2 ONLINE 0 0 0errors: No known data errors
Удаление диска горячей замены из пула.

# zpool offline myzfs /disk1
# zpool status -v
pool: myzfs
state: DEGRADED
status: One or more devices has been taken offline by the administrator.
Sufficient replicas exist for the pool to continue functioning
in a degraded state.
action: Online the device using ‘zpool online’ or replace the device
with ‘zpool replace’.
scrub: resilver completed with 0 errors on Tue Sep 11 13:39:25 2007
config:NAME STATE READ WRITE CKSUM
myzfs DEGRADED 0 0 0
mirror DEGRADED 0 0 0
/disk1 OFFLINE 0 0 0
/disk2 ONLINE 0 0 0errors: No known data errors
Запретить использование выбранного устройства (состояние offline). Пока устройство не будет возвращено к использованию (состояние online) на него не будет производиться запись и с него не будет производиться чтение. Чтобы временно отключить выбранное устройство используйте ключ -t. Перезагрузка вернет устройство в состояние online.

# zpool online myzfs /disk1
# zpool status -v
pool: myzfs
state: ONLINE
scrub: resilver completed with 0 errors on Tue Sep 11 13:47:14 2007
config:NAME STATE READ WRITE CKSUM
myzfs ONLINE 0 0 0
mirror ONLINE 0 0 0
/disk1 ONLINE 0 0 0
/disk2 ONLINE 0 0 0errors: No known data errors
Разрешить использование выбранного устройства (состояние online).

# zpool replace myzfs /disk1 /disk3
# zpool status -v
pool: myzfs
state: ONLINE
scrub: resilver completed with 0 errors on Tue Sep 11 13:25:48 2007
config:NAME STATE READ WRITE CKSUM
myzfs ONLINE 0 0 0
mirror ONLINE 0 0 0
/disk3 ONLINE 0 0 0
/disk2 ONLINE 0 0 0errors: No known data errors
Заменить один диск на другой в пуле устройств, например в случае неисправности /disk1.

# zpool scrub myzfs
«Чистка» хранилища. Проверяет все соответствия контрольных сумм. На зеркалируемых или RAID пулах ZFS автоматически исправит повреждения в данных.
ВНИМАНИЕ: «чистка» интенсивно использует операции ввода-вывода.

# zpool export myzfs
# zpool list
no pools available
Экспорт хранилища для последующего импортирования на другой системе.

# zpool import -d / myzfs
# zpool list
NAME SIZE USED AVAIL CAP HEALTH ALTROOT
myzfs 95.5M 114K 95.4M 0% ONLINE —
Импорт экспортированного хранилища.
Если ключ -d не задан, команда ищет /dev/dsk.
Так как в данном примере мы используем файлы, необходимо указать директорию с файлами используемыми хранилищем.

# zpool upgrade
This system is currently running ZFS pool version 8.All pools are formatted using this version.
# zpool upgrade -v
This system is currently running ZFS pool version 8.The following versions are supported:
VER DESCRIPTION
— ———————————————————
1 Initial ZFS version
2 Ditto blocks (replicated metadata)
3 Hot spares and double parity RAID-Z
4 zpool history
5 Compression using the gzip algorithm
6 pool properties
7 Separate intent log devices
8 Delegated administration
For more information on a particular version, including supported
releases, see:

http://www.opensolaris.org/os/community/zfs/version/N

Where ‘N’ is the version number.

Показать версию используемого пула. Флаг -v показывает возможности, поддерживаемые данным пулом. Используйте флаг -a, чтобы обновить все доступные пулы до новейшей из них версии. Обновленные пулы больше не будут доступны из систем, на которых работают более старые версии.

# zpool iostat 5
capacity operations bandwidth
pool used avail read write read write
———- —— —— —— —— —— ——
myzfs 112K 95.4M 0 4 26 11.4K
myzfs 112K 95.4M 0 0 0 0
myzfs 112K 95.4M 0 0 0 0
Получить статистику по операциям ввода/вывода

# zfs create myzfs/colin
# df -h
Filesystem kbytes used avail capacity Mounted on

myzfs/colin 64M 18K 63M 1% /myzfs/colin
Создать файловую систему и проверить ее стандартной командой df -h. Файловые системы автоматически монтируются в /zfs (по умолчанию). См. раздел Mountpoints в руководстве к zfs.

# zfs list
NAME USED AVAIL REFER MOUNTPOINT
myzfs 139K 63.4M 19K /myzfs
myzfs/colin 18K 63.4M 18K /myzfs/colin
Получить список файловых систем zfs

# zpool add myzfs /disk1
invalid vdev specification
use ‘-f’ to override the following errors:
mismatched replication level: pool uses mirror and new vdev is file
Попытка добавить одно устройство к зеркалируемому хранилищу провалилась.

# zpool add myzfs mirror /disk1 /disk5
# zpool status -v
pool: myzfs
state: ONLINE
scrub: none requested
config:NAME STATE READ WRITE CKSUM
myzfs ONLINE 0 0 0
mirror ONLINE 0 0 0
/disk3 ONLINE 0 0 0
/disk2 ONLINE 0 0 0
mirror ONLINE 0 0 0
/disk1 ONLINE 0 0 0
/disk5 ONLINE 0 0 0errors: No known data errors
Добавление зеркалируемого набора устройств (vdevs).

# zfs create myzfs/colin2
# zfs list
NAME USED AVAIL REFER MOUNTPOINT
myzfs 172K 159M 21K /myzfs
myzfs/colin 18K 159M 18K /myzfs/colin
myzfs/colin2 18K 159M 18K /myzfs/colin2
Создать вторую файловую систему. Заметим, что обе файловые системы показывают доступные 159M, т.к. не заданы квоты. Любая из файловых систем может вырасти до размеров всего пула.

# zfs set reservation=20m myzfs/colin
# zfs list -o reservation
RESERV
none
20M
none
Зарезервировать указанное пространство для файловой системы, таким образом остальные пользователи не смогут занять все доступное место.

# zfs set quota=20m myzfs/colin2
# zfs list -o quota myzfs/colin myzfs/colin2
QUOTA
none
20M
Установить и показать квоты.

# zfs set compression=on myzfs/colin2
# zfs list -o compression
COMPRESS
off
off
on
Включить и проверить сжатие.

# zfs set sharenfs=on myzfs/colin2
# zfs get sharenfs myzfs/colin2
NAME PROPERTY VALUE SOURCE
myzfs/colin2 sharenfs on local
Сделать общий ресурс через NFS. При этом, для того, чтобы ресурс был доступен после перезагрузки, не требуется вносить изменения /etc/dfs/dfstab.

# zfs set sharesmb=on myzfs/colin2
# zfs get sharesmb myzfs/colin2
NAME PROPERTY VALUE SOURCE
myzfs/colin2 sharesmb on local
Сделать общий ресурс по протоколу CIFS/SMB. Таким образом мы предоставим доступ к нашей файловой системе ZFS пользователям Windows.

# zfs snapshot myzfs/colin@test
# zfs list
NAME USED AVAIL REFER MOUNTPOINT
myzfs 20.2M 139M 21K /myzfs
myzfs/colin 18K 159M 18K /myzfs/colin
myzfs/colin@test 0 — 18K —
myzfs/colin2 18K 20.0M 18K /myzfs/colin2
Создать snapshot под названием test.

# zfs rollback myzfs/colin@test
Откатится к ранее созданному snapshot test.

# zfs clone myzfs/colin@test myzfs/colin3
# zfs list
NAME USED AVAIL REFER MOUNTPOINT
myzfs 20.2M 139M 21K /myzfs
myzfs/colin 18K 159M 18K /myzfs/colin
myzfs/colin@test 0 — 18K —
myzfs/colin2 18K 20.0M 18K /myzfs/colin2
myzfs/colin3 0 139M 18K /myzfs/colin3
Напрямую к snapshot’у обращаться нельзя. Необходимо клонировать файловую систему (версии test). Клон может располагаться в любом месте иерархии ZFS и будет сделан того же типа, что и оригинал.

# zfs destroy myzfs/colin2
# zfs list
NAME USED AVAIL REFER MOUNTPOINT
myzfs 20.1M 139M 22K /myzfs
myzfs/colin 18K 159M 18K /myzfs/colin
myzfs/colin@test 0 — 18K —
myzfs/colin3 0 139M 18K /myzfs/colin3
Уничтожить выбранную файловую систему.

# zfs destroy myzfs/colin
cannot destroy ‘myzfs/colin’: filesystem has children
use ‘-r’ to destroy the following datasets:
myzfs/colin@test
Попытка уничтожить файловую систему, у которой есть вложения. В данном случае snapshot. Необходимо либо удалить snapshot, либо сделать клона и вынеся его из данной файловой системы.

# zfs promote myzfs/colin3
# zfs list
NAME USED AVAIL REFER MOUNTPOINT
myzfs 20.1M 139M 21K /myzfs
myzfs/colin 0 159M 18K /myzfs/colin
myzfs/colin3 18K 139M 18K /myzfs/colin3
myzfs/colin3@test 0 — 18K —
# zfs destroy myzfs/colin
# zfs list
NAME USED AVAIL REFER MOUNTPOINT
myzfs 147K 159M 21K /myzfs
myzfs/colin3 18K 159M 18K /myzfs/colin3
myzfs/colin3@test 0 — 18K —
Вынесение клонированной файловой системы. Делается для того чтобы убрать зависимость от snapshot’а оригинала. Теперь snapshot является вложенным для клонированной файловой системы и оригинал файловой системы можно удалять.

# zfs rename myzfs/colin3 myzfs/bob
# zfs list
NAME USED AVAIL REFER MOUNTPOINT
myzfs 153K 159M 21K /myzfs
myzfs/bob 18K 159M 18K /myzfs/bob
myzfs/bob@test 0 — 18K —
# zfs rename myzfs/bob@test myzfs/bob@newtest
# zfs list
NAME USED AVAIL REFER MOUNTPOINT
myzfs 146K 159M 20K /myzfs
myzfs/bob 18K 159M 18K /myzfs/bob
myzfs/bob@newtest 0 — 18K —
Переименование файловой системы и отдельное переименование snapshot.

# zfs get all
NAME PROPERTY VALUE SOURCE
myzfs type filesystem —
myzfs creation Tue Sep 11 14:21 2007 —
myzfs used 146K —
myzfs available 159M —
myzfs referenced 20K —
[…]
Отобразить свойства данного пула. В дальнейшем данная команда может быть дополнена другими опциями.

# zpool destroy myzfs
cannot destroy ‘myzfs’: pool is not empty
use ‘-f’ to force destruction anyway
Нельзя удалить пул с активными файловыми системами.

# zfs unmount myzfs/bob
# df -h
myzfs 159M 20K 159M 1% /myzfs
Отмонтировать файловую систему в ZFS.

# zfs mount myzfs/bob
# df -h
myzfs 159M 20K 159M 1% /myzfs
myzfs/bob 159M 18K 159M 1% /myzfs/bob
Монтировать в ZFS файловую систему. Это происходит автоматически при загрузке.

# zfs send myzfs/bob@newtest | ssh localhost zfs receive myzfs/backup
# zfs list
NAME USED AVAIL REFER MOUNTPOINT
myzfs 172K 159M 20K /myzfs
myzfs/backup 18K 159M 18K /myzfs/backup
myzfs/backup@newtest 0 — 18K —
myzfs/bob 18K 159M 18K /myzfs/bob
myzfs/bob@newtest 0 — 18K —
Создается snapshot, который передается на вход команды zfs reveive. В данном случае, в качестве примера, использовано zfs reveive на localhost, но можно делать резервные копии на удаленном хосте или в локальном файле.

# zpool history
History for ‘myzfs’:
2007-09-11.15:35:50 zpool create myzfs mirror /disk1 /disk2 /disk3
2007-09-11.15:36:00 zpool detach myzfs /disk3
2007-09-11.15:36:10 zpool attach myzfs /disk1 /disk3
2007-09-11.15:36:53 zpool detach myzfs /disk3
2007-09-11.15:36:59 zpool add myzfs spare /disk3
2007-09-11.15:37:09 zpool remove myzfs /disk3
2007-09-11.15:37:18 zpool offline myzfs /disk1
2007-09-11.15:37:27 zpool online myzfs /disk1
2007-09-11.15:37:37 zpool replace myzfs /disk1 /disk3
2007-09-11.15:37:47 zpool scrub myzfs
2007-09-11.15:37:57 zpool export myzfs
2007-09-11.15:38:05 zpool import -d / myzfs
2007-09-11.15:38:52 zfs create myzfs/colin
2007-09-11.15:39:27 zpool add myzfs mirror /disk1 /disk5
2007-09-11.15:39:38 zfs create myzfs/colin2
2007-09-11.15:39:50 zfs set reservation=20m myzfs/colin
2007-09-11.15:40:18 zfs set quota=20m myzfs/colin2
2007-09-11.15:40:35 zfs set compression=on myzfs/colin2
2007-09-11.15:40:48 zfs snapshot myzfs/colin@test
2007-09-11.15:40:59 zfs rollback myzfs/colin@test
2007-09-11.15:41:11 zfs clone myzfs/colin@test myzfs/colin3
2007-09-11.15:41:25 zfs destroy myzfs/colin2
2007-09-11.15:42:12 zfs promote myzfs/colin3
2007-09-11.15:42:26 zfs rename myzfs/colin3 myzfs/bob
2007-09-11.15:42:57 zfs destroy myzfs/colin
2007-09-11.15:43:23 zfs rename myzfs/bob@test myzfs/bob@newtest
2007-09-11.15:44:30 zfs receive myzfs/backup
Показать историю команд для всех хранилищ. Можно посмотреть историю только для одного хранилища указав его имя в командной строке. Храниться история только для существующих хранилищ. При удалении хранилища его история удаляется.

# zpool destroy -f myzfs
# zpool status -v
no pools available
Используйте ключ -f, чтобы удалить хранилище с существующими файловыми файловыми системами.

Чистка мусора linux

du -sm /* | sort -nr
du -sm /var | sort -nr

Для вывода отсортированного списка файлов размером больше 500Мб, находящихся
в дереве файловой системы начиная с текущей директории можно использовать команду:

find . -type f -size +500M -exec ls -l {} \; | sort -k5 -n -r| less

Для вывода отсортированного по размеру списка директорий можно использовать команду:

find . -type d -maxdepth 1 -exec du -s {} \;|sort -k1 -r -n| less

Для выявления конечной директории с большими файлами можно снять ограничение на
рекурсивную проверку:

find . -type d -exec du -s {} \;| sort -k1 -r -n| less

Найти все avi, mpg, wmv файлы можно так:

find . \( -iname «*.avi» -o -iname «*.mpg» -o -iname «*.wmv» \) -type f -exec ls -l {} \;| less

PS. Вместо ls можно было использовать встроенные опции -ls или -printf «%s %P\n»,
но %P не всегда легко вспомнить, а вывод -ls не совсем привычен.

Найти 10 самых больших фалов, начиная с ‘/’ (корня)
$ find / -mount -type f -ls 2> /dev/null | sort -rnk7 | head -10 | awk ‘{printf «%10d MB\t%s\n»,($7/1024)/1024,$NF}’

Найти 10 самых больших фалов, начиная с ‘/home’
$ find /home -mount -type f -ls 2> /dev/null | sort -rnk7 | head -10 | awk ‘{printf «%10d MB\t%s\n»,($7/1024)/1024,$NF}’

самые большие директории:
du -kx | egrep -v «\./.+/» | sort -n

Спасибы.

http://www.shellhacks.com/ru/Poisk-Bolshih-Faylov-v-Linux

Перезагрузка windows 7 если не найдена PCI-e карта. — не дописано

После превращения из видеосервера в ферму с виртуалками на XenCloudServer нужно выделить машину под Windows 7 для 3 карт Devline на PCI-e. Проблема заключаешся в том, что виртаулка при проброса pci-e карт сначала видит ТОЛЬКО одну, а после второй перезагрузки видит все 3!

Решил написать скрипт в несколько строк для проверки наличия 3х карт. Если их нет то идем в ребут.
Брал за основу нарытый в инетах скрипт:

<# 
.SYNOPSIS 
    Uses Win32_PNPEntity to return information about non-working devices.
.DESCRIPTION 
    This script calls Get-WmiObject to retrieve plug and play details,  
    then formats and displays non-working devices. The script also has to 
    work around how WMI returns 0 and 1 object (i.e. no $obj.count). 
     
    This is also sample 6 on http://msdn.microsoft.com/en-us/library/aa394587(VS.85).aspx 
    recoded with PowerShell. 
.NOTES 
    File Name  : Get-NonWorkingDevices.ps1 
    Author     : Thomas Lee - tfl@psp.co.uk 
    Requires   : PowerShell V2 CTP3 
.LINK 
    Script posted to: 
    http://www.pshscripts.blogspot.com 
    Original MSDN Page 
    http://msdn.microsoft.com/en-us/library/aa394587(VS.85).aspx 
.EXAMPLE 
    PS C:\foo> Get-NonWorkingDevices.ps1 
    No bad devices on Cookham8 
.EXAMPLE 
    PS C:\foo> Get-NonWorkingDevices.ps1 
    Total Bad devices on Cookham8: 1 
    Name           : NETGEAR FA311v2 PCI Adapter - Virtual Network 
    Class Guid     : {4d36e972-e325-11ce-bfc1-08002be10318} 
    Description    : Microsoft Virtual Network switch Adapter 
    Device ID      : ROOT\VMS_MP\0001 
    Manufacturer   : 
    PNP Device Id  : ROOT\VMS_MP\0001 
    Service Name   : VMSMP 
#> 
 
### 
#   Start of Script 
### 
 
# Get non-working devices: 
$BadDevices = Get-WmiObject Win32_PNPEntity | Where {$_.ConfigManagerErrorcode -ne 0} 
 
# Display bad devices  
$Hostname = Hostname 
if (!$BadDevices) { 
   "No bad devices on {0}" -f $Hostname 
}  # end if 
else { 
if (!$BadDevices.Count) {$Count=1} else {$Count=$BadDevices.count} 
"Total Bad devices on {0}: {1}" -f $Hostname, $Count 
foreach ($Device in $BadDevices) { 
"Name           : {0}" -f $Device.Name 
"Class Guid     : {0}" -f $Device.Classguid 
"Description    : {0}" -f $Device.Description 
"Device ID      : {0}" -f $Device.Deviceid 
"Manufacturer   : {0}" -f $Device.Manufactuer 
 
"PNP Device Id  : {0}" -f $Device.PNPDeviceID 
"Service Name   : {0}" -f $Device.Service 
"" 
} # End of ForEach 
}  # End of Else 

 

Мое ваяние благо мы знаем

PNPDeviceID

Добавляем роуты в Centos

Если для Debian можно было, например, запихнуть дополнительные роуты при загрузке в /etc/rc.local или прямо в intefaces, и не париться, то в CentOS 7 лучше создать файлы, в которых описываются все маршруты для каждого интерфейса.

http://www.centos.org/docs/5/html/5.2/Deployment_Guide/s1-networkscripts-static-routes.html

Для моего eth0
vim /etc/sysconfig/network-scripts/route-eth0

ADDRESS0=192.168.0.0
NETMASK0=255.255.255.0
GATEWAY0=192.168.0.254
ADDRESS1=192.168.3.0
NETMASK1=255.255.255.0
GATEWAY1=192.168.0.242
ADDRESS2=192.168.0.4.0
NETMASK2=255.255.255.0
GATEWAY2=192.168.0.242
 
ИЛИ

default 192.168.0.254 dev eth0
192.168.3.0/24 via 192.168.0.242 dev eth0
192.168.4.0/24 via 192.168.0.242 dev eth0

 

Cubietruck + phpsane + m1005 mfp

Cubietruck

echo ‘deb http://ftp.ru.debian.org/debian wheezy-backports main’ >> /etc/apt/sources.list
echo ‘modprobe bcmdhd’ >> /etc/rc.local
apt-get update
apt-get install php5 apache2 cups sane netpbm gocr poppler-utils htop ifplugd iotop ntop zabbix-agent

Потом скачиваем сам phpSane
#wget http://garr.dl.sourceforge.net/project/phpsane/phpsane/0.7.1/phpSANE-0.7.1.zip

Создаем каталог для него
#mkdir /var/www/phpsane

перемещаем туда архив phpSane
#mv phpSANE-0.7.1.zip /var/www/phpsane/phpSANE-0.7.1.zip

и распаковываем его
#unzip phpSANE-0.7.1.zip

Далее сменим владельца данного каталога и его содержимого
#chowr -R www-data:www-data /var/www/phpsane

так же следует внести пользователя www-data в группу saned
#addgroup www-data saned

Теперь настроим Apache. Для этого в файле /etc/apache2/sites-available/default изменим директиву directoryindex
DirectoryIndex index.html index.php phpsane.php

И перезапустим apache
#service apache2 restart

Так же стоит обратить внимание на то, что для работы phpSANE нужны дополнительные пакеты. И их придется установить:
#apt-get install netpbm gocr poppler-utils

Теперь после захода на страницу http://ip-address/phpsane у нас должен открыться веб-интерфейс

Добавить Listen IP:631 интерфейсов
echo ‘Port 631’ >> /etc/cups/cupsd.conf
Добавить во все секции (Locale, admin … etc)
Allow all иначе на морде вылезет Forbringen

Дальше шарим принтера из веб морды и сканим по сети.

+

Завелось только при:
Драйвера HPAIO ставить нельзя! Не работают!
Только

 sane-find-scanner 

  # sane-find-scanner will now attempt to detect your scanner. If the
  # result is different from what you expected, first make sure your
  # scanner is powered up and properly connected to your computer.

  # No SCSI scanners found. If you expected something different, make sure that
  # you have loaded a kernel SCSI driver for your SCSI adapter.
  # Also you need support for SCSI Generic (sg) in your operating system.
  # If using Linux, try "modprobe sg".

found USB scanner (vendor=0x03f0, product=0x3b17) at libusb:001:002
  # Your USB scanner was (probably) detected. It may or may not be supported by
  # SANE. Try scanimage -L and read the backend's manpage.

  # Not checking for parallel port scanners.

  # Most Scanners connected to the parallel port or other proprietary ports
  # can't be detected by this program.

scanimage -L
device `hpljm1005:libusb:001:002' is a Hewlett-Packard LaserJet M1005 multi-function peripheral

 

ОБЯЗАТЕЛЬНО ВНЕСТИ АПАЧ в группы saned scanner lp lpadmin

addgroup www-data saned
addgroup -a -G lpadmin

Все проверить по cat /etc/group

scanner:x:109:saned,www-data,root
lpadmin:x:111:root,www-data
saned:x:113:www-data,root
——————————————————————————————
Сходу завелась версия phpsane 0.7.2

Для версии 0.8.0 нужны подпилки в конфигах.
/var/www/incl/config.php
1.
Сделать руками
$temp_dir = «./tmp/»; // temporary directory for storing preview files
$save_dir = «./output/»; // destination directory for scanned files
$scanner_dir = «./scanners/»; // destination directory for storing and reading scanner configuration files

2. По дефолту поставить русский
$lang_id = 4;

3. Поставить просмотр по умолчанию равным $PREVIEW_HEIGHT_MM = 297; — ИНАЧЕ ОШИБКА

4. Убрать не нужные Форматы
//add_page_size(‘A0’, 841, 1189);
//add_page_size(‘A1’, 594, 841);
//add_page_size(‘A2’, 420, 594);
//add_page_size(‘A3’, 297, 420);

5. Прописать СВОИ пути к pdfunite и gocr
по дефолту
$GOCR = «/opt/bin/gocr»; //optional ocr binary
$PDFUNITE = «/usr/local/bin/pdfunite»; //optional PDF merge binary

Я тупо прописал симлинки, такого формата (установить gocr и poppler-utils)
ln -s /usr/bin/pdfunite /usr/local/bin/pdfunite

6. Сканер ругался на параметр scanimage — я его закомментировал.
//$usr_opt = » —jpeg-quality 0″;
$usr_opt = «»;

При сих настройках чудо завелось. Всем спасибо.
В обоих филиалах уже phpsane трудиться на благо ленивых манагеров.

+ Был косяк с НЕПОЛНЫМ сканированием листа A4. Не хватало 2 см до конца листа!
При этом через консоль scanimage > image.ppm сканировал ВЕСЬ лист.
В консоль сливал

 scanimage > test.ppm
scanimage: rounded value of br-x from 220 to 220
scanimage: rounded value of br-y from 330 to 330

 

Поэтому такие настройки я дал и превьюшке и полному скану в конфигах, заменив дефолтные A4.

Читать далее

Rsnapshot

http://dobroserver.ru/rsnapshot-inkrementalnoe-rezervnoe-kopirovanie

зависания модема huawei e1550 — жесткий рестарт

Ubuntu отключение usb модема

Ищем модем:
for device in $(ls /sys/bus/usb/devices/*/product); do echo $device;cat $device;done
Отключаем:
sudo sh -c «echo 0 > /sys/bus/usb/devices/3-1/authorized» (подставляем свой номер)
Включаем:

sudo sh -c «echo 1 > /sys/bus/usb/devices/3-1/authorized»

или
#!/bin/sh
 echo "Выключение питания"
 echo suspend > /sys/bus/usb/devices/1-9/power/level
 sleep 10
 echo "Включение питания"
 echo on > /sys/bus/usb/devices/1-9/power/level

 http://sysadmin.te.ua/linux/usb.html

http://sysadmin.te.ua/linux/usb.html

 

Кулл http://forum.ubuntu.ru/index.php?topic=111137.0

Скомпиленный usbreset

usbreset.tar.gz

 

Учкудук два модема…

Ещё пару слов дополню…
Поставил на систему второй модем для входящих с АллоИнкогнито и тут пришёл он самый… П-ц который: модемы сами по себе менялись местами хлеще акробатов в цирке! При отключении одного — второй норовил переехать на его порты и т.д. и т.п.

А т.к. диалпланы для них в корне разные — надо было как-то решать…
Решение вполне обоснованное для Линукса: порту можно назначить фиксированную “ссылку»!
Т.е. — задаём для модема 1 — порты не ttyUSB1 и 2, а hv0 и hi0 (ХуавейВоис и ХуавейИнфо)!
Как?
Отключаем от компа оба модема, вставляем первый.
Даём с рута в терминале команду dmesg
В ответ вываливается куча всего, но в конце — заветные строки:
[291015.913221] option 1-2:1.0: GSM modem (1-port) converter detected
[291015.913364] usb 1-2: GSM modem (1-port) converter now attached to ttyUSB0
[291015.913926] option 1-2:1.1: GSM modem (1-port) converter detected
[291015.914026] usb 1-2: GSM modem (1-port) converter now attached to ttyUSB1
[291015.916678] option 1-2:1.2: GSM modem (1-port) converter detected
[291015.916812] usb 1-2: GSM modem (1-port) converter now attached to ttyUSB2

«Кто есть ху»:
После option идёт идентификатор порта.
1-2 — первый ЮСБ хост, второе устройство
:1.1 — первый порт на этом устройстве.
В следующей строке — инфа на тему того, каким портом стал этот наш внутренний.
Нас интересуют пред-последний и последний — 1 и 2 в данном случае.
1 — порт для голоса, 2 — для данных.
Теперь открываем из под рута для редактирования файл /etc/udev/rules.d/huawei.rules — тут прописываются правила для всея Хуавей-девайсов в системе. Скорее всего он будет пустым.
Вбиваем строчки:
KERNEL=="ttyUSB[0-9]*", ID=="1-2:1.1", NAME="%k", SYMLINK+="hv0", GROUP="root", MODE="0666"
KERNEL=="ttyUSB[0-9]*", ID=="1-2:1.2", NAME="%k", SYMLINK+="hi0", GROUP="root", MODE="0666"

«Всея устройства на этом конкретном порту отныне и присно зовутся ещё и hv0, а на этом — hi0! Сохраняем, Аминь!»
Повторяем процесс начиная с втыкания для второго модема — появятся ещё две строчки в файле, в которых уже порты от второго модема и hv1 и hi1… Можно так и третий, и сто-тридцать-пятый добавить…

Теперь если выдернуть модемы и вставить, то по команде ls -1 /dev/hv* или ls -1 /dev/hi* — выдаст ВСЕГДА нужный девайс, главное не перепутать разъём на компе!

/etc/asterisk/datacard.conf тоже меняется — вместо безликих
audio=/dev/ttyUSB1 ; tty for audio connection
data=/dev/ttyUSB2 ; tty for AT commands

Появляются
audio=/dev/hv0 ; tty for audio connection
data=/dev/hi0 ; tty for AT commands

Теперь перезагружаем Астериск и ура — путаницы больше не будет!
На этом с железом пока всё.

 

 

OpenVPN настройка сервера для филиалов + мои рабочие конфиги

Спасибо

http://www.ylsoftware.com/news/393

 

Соединение нескольких офисов в одну сеть с помощью OpenVPN

 

Итак. Допустим что у некоторой фирмы есть несколько офисов в различных точках города (возможно даже земного шара — не суть важно) и нам нужно обеспечить максимально простой способ взаимодействия локальных сетей различных офисов между собой. Неплохим решением этой задачи будет объединение этих сетей посредством OpenVPN.

Итак. Уточним начальные условия:


Центральный офис (office-0):

Сервер под управлением Debian Linux. Три сетевых интерфейса: eth0, eth1, eth2. Конфигурация следующая:

  • eth0: внешний интерфейс, имеющий реальный ip-адрес a.b.c.d.
  • eth1: первая локальная сеть: 192.168.1.1/24.
  • eth2: вторая локальная сеть: 192.168.2.1/24.

Офис 1 (office-1):

Под управлением Debian Linux. Два интерфейса:

  • eth0: внешний интерфейс, имеющий доступ к адресу a.b.c.d (каким либо образом).
  • eth1: локальная сеть: 192.168.3.1/24.

Офис 2 (office-2)

Сервер полностью аналогичен серверу в первом офисе, за исключением eth1: там адрес 192.168.4.1/24.


Объединять мы будем сервера в виртуальную сеть 192.168.10.0/24. Поэтому на всех серверах должен быть настроен NAT не только для «своих» сетей, но и для сети 192.168.10.0/24.

Будем считать что всё это уже сделано. Приступаем к установке и настройке OpenVPN-сервера:

apt-get install openvpn

Создаём файл конфигурации /etc/openvpn/server.conf следующего содержания:

mode server
tls-server
daemon

ifconfig 192.168.10.1 255.255.255.0

port 1194
proto tcp-server
dev tap
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/office-0.crt
key /etc/openvpn/keys/office-0.key
dh /etc/openvpn/keys/dh1024.pem
client-config-dir /etc/openvpn/ccd
push "route 192.168.10.0 255.255.255.0 192.168.10.1"
route 192.168.3.0/24 192.168.10.101 # Обратная видимость сети филиала
route 192.168.4.0/24 192.168.10.102 # Обратная видимость сети филиала
keepalive 10 120
client-to-client
comp-lzo
persist-key
persist-tun
verb 3
log-append /var/log/openvpn.log

Создаём каталог, в котором будут хранится индивидуальные настройки клиентов:

mkdir /etc/openvpn/ccd

Копируем скрипты для генерации ключей и создаём ключи:

cp -vR /usr/share/doc/openvpn/examples/easy-rsa/2.0 /etc/openvpn/
mkdir /etc/openvpn/2.0/keys
ln -s /etc/openvpn/2.0/keys /etc/openvpn/keys
cd /etc/openvpn/2.0/keys
source ./vars
./clean-all
./build-ca
./build-dh

# Ключ для центрального офиса
./build-key-server office-0

# Ключ для первого офиса
./build-key office-1

# Ключ для второго офиса
./build-key office-2

Входе выполнения этих команд будет задан ряд вопросов. Ответы на них вобщем-то очевидны, поэтому заострять на них внимание не будем.

Далее создаём файлы /etc/openvpn/ccd/office-1 и /etc/openvpn/ccd/office-2. Содержание первого:

# приcваиваем ip-адрес
ifconfig-push 192.168.10.101 255.255.255.0

# роутинг на сети центрального офиса
push "route 192.168.1.0 255.255.255.0 192.168.10.1"
push "route 192.168.2.0 255.255.255.0 192.168.10.1"

# роутинг на сеть второго офиса
push "route 192.168.4.0 255.255.255.0 192.168.10.102"

Содержание второго:

# присваиваем ip-адрес
ifconfig-push 192.168.10.102 255.255.255.0

# роутинг на сети центрального офиса
push "route 192.168.1.0 255.255.255.0 192.168.10.1"
push "route 192.168.2.0 255.255.255.0 192.168.10.1"

# роутинг на сеть первого офиса
push "route 192.168.3.0 255.255.255.0 192.168.10.101"

На этом настрока сервера завершена. Перезапускаем его:

/etc/init.d/openvpn restart

Убеждаемся что поднялся интерфейс tap0:

ifconfig tap0

Переходим к настройке офисов. Рассмотрим только один. Второй будет сделан аналогично, за исключением имён сертификатов.

Устанавливаем openvpn:

apt-get install openvpn
mkdir /etc/openvpn/keys

Создаём файл конфигурации /etc/openvpn/client.conf:

client
dev tap
proto tcp

# адрес сервера в центрально офисе
remote a.b.c.d 1194
resolv-retry infinite
nobind
persist-key
persist-tun
comp-lzo
ns-cert-type server
ca ca.crt
cert /etc/openvpn/keys/office-1.crt
key /etc/openvpn/keys/office-1.key
log-append /var/log/openvpn.log

Далее нам нужно поместить файлы office-1.* и ca.crt из каталога /etc/openvpn/keys сервера в каталог /etc/openvpn/keys клиента.

После этого запускаем сервис:

chkconfig openvpn on
service openvpn start

Убеждаемся что поднялся интерфейс:

ifconfig tap0

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

На этом всё. Более подробную информацию можно найти в документации по openvpn.

 

Решил собрать на Debian 7, а клиентами расставить 2 х Mikrotik 2011UAS 2HnD IN.

Все шикарно встало, сети просматривают друг друга полностью.

Конфиги:

mode server
tls-server
daemon

ifconfig 192.168.254.1 255.255.255.0

port 1194
proto tcp-server
dev tap
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/office-0.crt
key /etc/openvpn/keys/office-0.key
dh /etc/openvpn/keys/dh1024.pem
client-config-dir /etc/openvpn/ccd
push "route 192.168.254.0 255.255.255.0 192.168.254.1"
route 192.168.3.0 255.255.255.0 192.168.254.101
route 192.168.4.0 255.255.255.0 192.168.254.102
user nobody
group nogroup
keepalive 10 120
client-to-client
persist-key
persist-tun
verb 4

tun-mtu 1500
tun-mtu-extra 32
mssfix 1300
#keepalive 15 120
#fragment 1200

log-append /var/log/openvpn.log
status /var/log/openvpn/openvpn-status.log

 

1 Клиент на сервере: /etc/openvpn/ccd/office-1

# приcваиваем ip-адрес
ifconfig-push 192.168.254.101 255.255.255.0

iroute 192.168.3.0 255.255.255.0

# роутинг на сети центрального офиса
push "route 192.168.0.0 255.255.255.0 192.168.254.1"
push "route 192.168.1.0 255.255.255.0 192.168.254.1"

# роутинг на сеть второго офиса
push "route 192.168.4.0 255.255.255.0 192.168.254.102"

 

2 Клиент  на сервере: /etc/openvpn/ccd/office-2

#ip-адрес
ifconfig-push 192.168.254.102 255.255.255.0

# роутинг на сети центрального офиса
push "route 192.168.0.0 255.255.255.0 192.168.254.1"
push "route 192.168.1.0 255.255.255.0 192.168.254.1"

# роутинг на сеть первого офиса
push "route 192.168.3.0 255.255.255.0 192.168.254.101"

Клиент Mikrotik 1 филиал

name="ovpn-out1" mac-address=02:41:A8:A1:6C:A8 max-mtu=1500 connect-to=93.123.171.252 port=1194 mode=ethernet user="nobody" password="" profile=default certificate=cert1 auth=sha1 cipher=none add-default-route=no

Iptables на сервере:

echo 1 >/proc/sys/net/ipv4/ip_forward
iptables -F
iptables -t nat -A POSTROUTING -j MASQUERADE
iptables -t nat -I POSTROUTING -o tap0 -j MASQUERADE

iptables -F FORWARD
iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i tap0 -o eth1 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth1 -o tap0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -j REJECT

iptables -F INPUT
iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -p tcp --source-port 80 -j ACCEPT
iptables -A INPUT -p tcp --source-port 21 -j ACCEPT
iptables -A INPUT -p tcp --source-port 22 -j ACCEPT

+ не забываем про Fail2ban на серв.

Firewall на Mikrotik 1 филиала

Filter:

;;; OpenVPN
     chain=input action=accept protocol=tcp dst-port=1194 

 9   chain=input action=accept protocol=tcp in-interface=ovpn-out1 

10   chain=forward action=accept src-address=192.168.0.0/24 dst-address=192.168.3.0/24 

11   chain=forward action=accept src-address=192.168.3.0/24 dst-address=192.168.0.0/24 

12   chain=forward action=accept protocol=icmp 

13   ;;; drop ssh brute forcers
     chain=input action=drop protocol=tcp src-address-list=ssh_blacklist dst-port=22 

14   chain=input action=add-src-to-address-list connection-state=new protocol=tcp src-address-list=ssh_stage3 address-list=ssh_blacklist 
     address-list-timeout=1w3d dst-port=22 

15   chain=input action=add-src-to-address-list connection-state=new protocol=tcp src-address-list=ssh_stage2 address-list=ssh_stage3 
     address-list-timeout=1m dst-port=22 

16   chain=input action=add-src-to-address-list connection-state=new protocol=tcp src-address-list=ssh_stage1 address-list=ssh_stage2 
     address-list-timeout=1m dst-port=22 

17   chain=input action=add-src-to-address-list connection-state=new protocol=tcp address-list=ssh_stage1 address-list-timeout=1m dst-port=22

Nat:

chain=srcnat action=masquerade src-address=192.168.3.0/24

Также подкладываем файлы сертификатов

[root@MikroTik_Mercedes] > certificate print
Flags: K - decrypted-private-key, Q - private-key, R - rsa, D - dsa 
 0 KR name="cert1" subject=C=RU,ST=MOSCOW,L=MOSCOW,O=XXX,CN=office-1,name=office-1,emailAddress=xxx@GMAIL.COM 
      issuer=C=RU,ST=MOSCOW,L=MOSCOW,O=XXX,CN=srv-vpn,name=srv-vpn,emailAddress=xxx@GMAIL.COM serial-number="02" email=xxx@GMAIL.COM 
      invalid-before=jul/07/2013 08:09:59 invalid-after=jul/05/2023 08:09:59 ca=yes 

 1    name="cert2" subject=C=RU,ST=MOSCOW,L=MOSCOW,O=XXX,CN=srv-vpn,name=srv-vpn,emailAddress=xxx@GMAIL.COM 
      issuer=C=RU,ST=MOSCOW,L=MOSCOW,O=XXX,CN=srv-vpn,name=srv-vpn,emailAddress=xxx@GMAIL.COM serial-number="D15C8FD9479AE615" 
      email=xxx@GMAIL.COM invalid-before=jul/07/2013 07:53:38 invalid-after=jul/05/2023 07:53:38 ca=yes

 

 

https://terrty.net/2014/softether-vpn-ubuntu/ — softether