Форум сайта python.su
0
Добрый вечер.
В общем есть скрипт на bash, который успешно создает нужный мне контейнер, вот его код:
#!/bin/bash starttime=$(date +%s) #truecrypt type=1 #Тип Нормальный или скрытый filesize=10M # Размер контейнера encrypt=6 # Тип шифрования Serpent-AES hash=1 # Тип хеша RIPEMD-160 fs=2 #тип файловаой системы, нам FAT подойдет под Windows l320=`pwgen -s 320 1` pass_tcp=`pwgen -s 64 1` PATHLOCAL="/etc/maket" PATHUSB="$PATHLOCAL/soft_usb" keyfile="$PATHUSB/!!/key.txt" startbat="$PATHUSB/open.bat" tcp="waw" #create truecrypt container if ! [ -d $PATHUSB ]; then echo 'Папки нет - создание папки '$PATHLOCAL mkdir -p -v $PATHLOCAL/{apps,soft_usb,mnt} mkdir -p -v $PATHUSB/{!!,} fi echo `pwgen -s 30 6` > $keyfile expect <<EOF spawn /usr/bin/truecrypt -c $PATHUSB/!!/$tcp expect true: send "$type\n" expect size: send "$filesize\n" expect ecrypt: send "$encrypt\n" expect Hash: send "$hash\n" expect filesystem: send "$fs\n" expect pass1: send "$pass_tcp\n" send "$pass_tcp\n" expect filekey: send $keyfile\n expect finishkey: send \n expect L320: send $l320\n expect EOF expect <<EOF spawn /usr/bin/truecrypt --keyfiles=$keyfile $PATHUSB/!!/$tcp $PATHLOCAL/mnt expect pass: send "$pass_tcp\n" expect secure: send \n expect EOF truecrypt -d endtime=$(date +%s) totaltime=$(( $endtime - $starttime )) echo "Время выполнения скрипта: "$totaltime" секунд"
# -*- coding: utf -*- import os,sys import pexpect import random import string import time def random_id(n): rid = '' for x in range(n): rid += random.choice(string.ascii_letters + string.digits) return rid t1=time.time() print(t1) pass_tcp=random_id(64) path='/home/firefedot/bash' type='1' filesize='10M' encrypt='6' hash='1' fs='2' l320=random_id(320) PATHLOCAL=path PATHUSB=PATHLOCAL+"/soft_usb" keyfile=PATHUSB+"/!!/readme.txt" startbat=PATHUSB+"/start.bat" tcp="waw" if __name__ == "__main__": print ("truecrypt") print(l320) f = open(keyfile, 'w') f.write(random_id(180)+'\n') f.close() os.chdir(path) k=pexpect.spawn('/usr/bin/truecrypt -c '+PATHUSB+'/!!/'+tcp) #k.expect ("Volume type:") k.sendline(type) #k.expect ("size:") k.sendline(filesize) #k.expect ("ecrypt:") k.sendline(encrypt) #k.expect ("Hash:") k.sendline(hash) #k.expect ("filesystem:") k.sendline(fs) #k.expect ("pass1:") k.sendline(pass_tcp) k.sendline(pass_tcp) #k.expect ("filekey:") k.sendline(keyfile) #k.expect ("finishkey:") k.sendline('\n') #k.expect ("L320:") k.sendline(l320) k.close() o=pexpect.spawn('/usr/bin/truecrypt --keyfiles='+keyfile+' '+PATHUSB+'/!!/'+tcp+' '+PATHLOCAL+'/mnt') #o.expect ("pass:") o.sendline (pass_tcp) #o.expect ("secure:") o.sendline ('\n') o.close() os.system('truecrypt -d') print(os.system('ls -lah '+PATHUSB+'/!!')) t2=time.time() print(t2-t1)
Traceback (most recent call last): File "/home/firefedot/NetBeansProjects/truecrypt/src/truecrypt.py", line 47, in <module> k.expect ("Volume type:") File "/usr/lib/python2.7/site-packages/pexpect/__init__.py", line 1418, in expect timeout, searchwindowsize) File "/usr/lib/python2.7/site-packages/pexpect/__init__.py", line 1433, in expect_list timeout, searchwindowsize) File "/usr/lib/python2.7/site-packages/pexpect/__init__.py", line 1521, in expect_loop raise EOF(str(err) + '\n' + str(self)) pexpect.EOF: End Of File (EOF). Exception style platform. <pexpect.spawn object at 0x7f469b990190> version: 3.1 command: /usr/bin/truecrypt args: ['/usr/bin/truecrypt', '-c', '/home/firefedot/bash/soft_usb/!!/waw'] searcher: <pexpect.searcher_re object at 0x7f469b990210> buffer (last 100 chars): '' before (last 100 chars): '' after: <class 'pexpect.EOF'> match: None match_index: None exitstatus: None flag_eof: True pid: 13912 child_fd: 3 closed: False timeout: 30 delimiter: <class 'pexpect.EOF'> logfile: None logfile_read: None logfile_send: None maxread: 2000 ignorecase: False searchwindowsize: None delaybeforesend: 0.05 delayafterclose: 0.1 delayafterterminate: 0.1
Отредактировано firefedot (Сен. 25, 2015 11:14:40)
Офлайн
0
Добавил k.expect(pexpect.EOF); в конец работы pexect
и поправил переменные с
k=pexpect.spawn('/usr/bin/truecrypt -c '+PATHUSB+'/!!/'+tcp)
k=pexpect.spawn('/usr/bin/truecrypt -c %s' %tcp)
Офлайн