Форум сайта python.su
Случайно в нете нашел скрипт который мне нужно написать на питоне…
Но к сожалению он на баше… в баше к сожалению не очень хорошо разбираюсь… как в общем и в питоне…
Помогите переписать скриптна питон пожалуйста.
Или хотя бы расскажите как он работает этот баш скрипт… чтобы я смог найти аналогичные функции в питоне.
Спасибо за любую помощь!
Скрипт номер раз
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…
Но пока, за неимением лучшего, так.
Офлайн
чего скрипт то делает?
Офлайн
o7412369815963первый скрипт создает файл забивает случайной последовательностью и делает из него защищенное хранилище по средством cryptsetup
чего скрипт то делает?
Офлайн
вот так можно создать файл со случайной последовательностью
from random import randrange
open('container.dmc','wb').write( ''.join([chr(randrange(0,256)) for x in xrange(100)]) )
Офлайн
o7412369815963а какого размера он будет?
вот так можно создать файл со случайной последовательностьюfrom random import randrange
open('container.dmc','wb').write( ''.join([chr(randrange(0,256)) for x in xrange(100)]) )
Офлайн
buddserага… выяснил… число 100 это получается 100 байт. спасибо очень классно забиват случайной последовательностью… только почему то намного дольше это делает чем команда shred… но зато качественно.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 мегабайт
Офлайн
Вы можете резко ускорить скрипт, если уберете рандомность. Она не нужна вам. Там же поверх создается закриптованая FS.
Результат никак не изменится, если вы забьете это все это нулями или еще чем-нибудь. Результат - это создать файл нужного размера, а то, что делает shred для данного случая вовсе не обязательно.
Либо, если уже так хочется аналогичного поведения, можно читать из /dev/urandom, когда создаете файл. Будет медленнее, чем shred, но намного быстрее, чем генерить все через randrange.
Офлайн
спасибо за совет, убрали пока что рандомность
Офлайн