Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 20, 2010 17:45:37

buddser
От:
Зарегистрирован: 2010-02-20
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите переписать Bash-скрипт на Python

Случайно в нете нашел скрипт который мне нужно написать на питоне…
Но к сожалению он на баше… в баше к сожалению не очень хорошо разбираюсь… как в общем и в питоне…
Помогите переписать скриптна питон пожалуйста.
Или хотя бы расскажите как он работает этот баш скрипт… чтобы я смог найти аналогичные функции в питоне.
Спасибо за любую помощь!

Скрипт номер раз

touch container.dmc
shred -n1 -s50M container.dmc
losetup /dev/loop0 ./container.dmc
cryptsetup -y create X /dev/loop0
mkfs /dev/mapper/X

Скрипт номер два

#!/bin/bash

LABEL=X;
LOOPD=/dev/loop0;
MNTPT=/media/Disk_$LABEL;
CCNTR=/media/FAFE-47E0/container.dmc;

start() {
echo ‘ ’;
echo '—– Mount CryptoContainer ———————';
/sbin/losetup $LOOPD $CCNTR;
/sbin/cryptsetup create $LABEL $LOOPD;
mkdir $MNTPT;
mount -t ext2 /dev/mapper/$LABEL $MNTPT;
MLINE=`mount | grep $MNTPT`;
if ; then
echo "Label :: ; $CCNTR –> $MNTPT; ";
echo ‘—– Mount CryptoContainer Complete ! ———’;
else echo ‘—– ERROR - Bad password —————–’;
stop;
fi
echo ‘ ’;
}

stop() {
echo ‘ ’;
echo '—– Unmount CryptoContainer ——————–';
sync;
umount $MNTPT;
/sbin/cryptsetup remove $LABEL;
/sbin/losetup -d $LOOPD;
DLINE=`ls -A $MNTPT`;
if ;
then echo ‘—– CryptoContainer cannot be unmouted !!! ——’;
else
rm -rf –one-file-system $MNTPT;
echo ‘—– Unmount CryptoContainer Complete ! ———’;
fi
echo ‘ ’;
}

case “$1” in
start)
start;;
stop)
stop;;
*)
MLINE=`mount | grep $MNTPT`;
if ; then
stop;
else
stop;
clear;
start;
fi
esac

exit 0;

то что сам нахожу буду по тихоньку тоже писать…

Эта строка заменяет touch из первого скрипта

import os

if not os.path.exists('container.dmc'):
open('container.dmc', ‘w’).close()

Вот такая строка на питоне:

os.system(“shred -n1 -s50M container.dmc”)

Заменит вот такую на баше:

shred -n1 -s50M container.dmc

Сразу оговорюсь я хотел бы использовать функции питона… а не работать через os.system…
Но пока, за неимением лучшего, так.



Офлайн

#2 Фев. 20, 2010 18:01:12

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Помогите переписать Bash-скрипт на Python

Офлайн

#3 Фев. 20, 2010 18:03:20

buddser
От:
Зарегистрирован: 2010-02-20
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите переписать Bash-скрипт на Python

o7412369815963
чего скрипт то делает?
первый скрипт создает файл забивает случайной последовательностью и делает из него защищенное хранилище по средством cryptsetup

второй скрипт монтирует/размонтирует это хранилище.(он определяет примонтировано ли он, если да то отмонтирует а если нет то примонтирует)



Офлайн

#4 Фев. 20, 2010 18:24:23

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Помогите переписать Bash-скрипт на Python

вот так можно создать файл со случайной последовательностью

from random import randrange
open('container.dmc','wb').write( ''.join([chr(randrange(0,256)) for x in xrange(100)]) )

Офлайн

#5 Фев. 20, 2010 18:27:17

buddser
От:
Зарегистрирован: 2010-02-20
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите переписать Bash-скрипт на Python

o7412369815963
вот так можно создать файл со случайной последовательностью
from random import randrange
open('container.dmc','wb').write( ''.join([chr(randrange(0,256)) for x in xrange(100)]) )
а какого размера он будет?
потому что строка shred -n1 -s50M container.dmc определяет размер файла в 50 мегабайт



Офлайн

#6 Фев. 20, 2010 18:46:44

buddser
От:
Зарегистрирован: 2010-02-20
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите переписать Bash-скрипт на Python

buddser
o7412369815963
вот так можно создать файл со случайной последовательностью
from random import randrange
open('container.dmc','wb').write( ''.join([chr(randrange(0,256)) for x in xrange(100)]) )
а какого размера он будет?
потому что строка shred -n1 -s50M container.dmc определяет размер файла в 50 мегабайт
ага… выяснил… число 100 это получается 100 байт. спасибо очень классно забиват случайной последовательностью… только почему то намного дольше это делает чем команда shred… но зато качественно.



Офлайн

#7 Фев. 20, 2010 23:55:00

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

Помогите переписать Bash-скрипт на Python

Вы можете резко ускорить скрипт, если уберете рандомность. Она не нужна вам. Там же поверх создается закриптованая FS.
Результат никак не изменится, если вы забьете это все это нулями или еще чем-нибудь. Результат - это создать файл нужного размера, а то, что делает shred для данного случая вовсе не обязательно.
Либо, если уже так хочется аналогичного поведения, можно читать из /dev/urandom, когда создаете файл. Будет медленнее, чем shred, но намного быстрее, чем генерить все через randrange.



Офлайн

#8 Фев. 23, 2010 16:21:24

buddser
От:
Зарегистрирован: 2010-02-20
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите переписать Bash-скрипт на Python

спасибо за совет, убрали пока что рандомность



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version