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

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

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
чего скрипт то делает?
buddser
o7412369815963
чего скрипт то делает?
первый скрипт создает файл забивает случайной последовательностью и делает из него защищенное хранилище по средством cryptsetup

второй скрипт монтирует/размонтирует это хранилище.(он определяет примонтировано ли он, если да то отмонтирует а если нет то примонтирует)
o7412369815963
вот так можно создать файл со случайной последовательностью
from random import randrange
open('container.dmc','wb').write( ''.join([chr(randrange(0,256)) for x in xrange(100)]) )
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 мегабайт
buddser
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… но зато качественно.
Ed
Вы можете резко ускорить скрипт, если уберете рандомность. Она не нужна вам. Там же поверх создается закриптованая FS.
Результат никак не изменится, если вы забьете это все это нулями или еще чем-нибудь. Результат - это создать файл нужного размера, а то, что делает shred для данного случая вовсе не обязательно.
Либо, если уже так хочется аналогичного поведения, можно читать из /dev/urandom, когда создаете файл. Будет медленнее, чем shred, но намного быстрее, чем генерить все через randrange.
buddser
спасибо за совет, убрали пока что рандомность
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB