شكرا اخوي سيلنت ما شاء الله عليك ربي يحرسك من كل مكروه
جاري التجربة وان شاء الله يكون كل شيء خير يا رب
اعذرني واسف على الغلبه
تحياتي لك
إعـــــــلان
تقليص
لا يوجد إعلان حتى الآن.
سؤال بخصوص الملفات
تقليص
X
-
السلام عليكم ورحمة الله
آسف جدا على التأخر، نعم يمكنك فصل عملية إنشاء الملف ويمنك انشاءها يدويا عبر :
كود:find /root/gnu/files -type f | while read file; do md5sum "$file" 1>>/root/out.txt; done
كود:#!/bin/bash SEARCH="/home/" DEPLACE="/root/scan" cd $HOME [ ! -d $DEPLACE ] && mkdir $DEPLACE find $SEARCH -type f > files.txt while read file; do if [ $(egrep -c $(md5sum "$file" | awk '{print $1}') "/root/out.txt") -gt "0" ]; then mv "$file" $DEPLACE fi done <files.txt [ $(ls -lut | awk '{print $6}' | egrep -c $(date '+%Y-%m-%d')) -gt "0" ] && echo "New files" | mail -s "new files in $SEARCH" [email protected]
تحياتي.
اترك تعليق:
-
السلام عليكم
ارجوا اضافة سطر التنبيه البريدي في حال نقل اي ملف
if [ "$email_*****" == "1" ]; then
انتظركم
اترك تعليق:
-
الاخ SilenCker اشكرك جدا واحيك على تعبك وايضا لا انسى الاخرين شكار لكم
تم تنفيذ السكربت ونجح والحمدلله فقط اريد تغيرات طفيفه وتصليح خطأ صغير
الملفات التي ينقلها السكربت الى المجلد التالي
/root/ppppp
تكون لا يمكن قرائتها اي تظهر رموز وعبارات غير مفهمومه
------------------
الأن التعديل الذي اريد ان اعمله على السكربت هو كالتالي
حاليا انا على المسار التالي
pwd
root/gnu/files
هذا المسار root/gnu/files
يوجد به الملفات التي اريد ان يقوم بقرأة md5 لها
كما قلنا 200 ملف على الاقل
فقط اريد جمله لوب لها اي لا اريد وضعها داخل السكربت هذه الجمله
لا دخل لها بسكربت تقوم بعمل قرأت الملفات وتوليد md5 لها وحفظ الملف في المسار التالي
root/out.txt
طبعا طريقة التخزين تكون كالتالي
كود:d9e6b6f65c65dc0c0c420443066e941f gnu.sh d9e6b6f65c65dc0c04204430666e941f gnu2.sh d9e6b6f65c6420443066e941fooyyggg gnu1.sh d9e6b642044306dc0c0c4204430i941f gnu3.sh اي الهاش + اسم الملف
find root/gnu/files -type f | while read file; do md5sum "$file" 1>>root/out.txt"; done echo " finished "
------------------------------------------------
الجزء الثاني
هو يقوم بتأكد هل مجلد الذي سيقوم بنقل اليه موجود ام لا
كود:if [ "`/root | egrep "scan"] then echo " yes found" exit else echo " not found "; then mkdir /root/scan
بعدها تحويل الجمله الثانية الى
mv "$file" $DEPLACE && chmod 600 all file transfer DEPLACE /root/scan
اي اضافة تصريح 600 الى الملفات
كود:#!/bin/bash #place search SEARCH="/home/" # Transfer files with the same MD5 DEPLACE="/root/scan" # Values md5 stored SEARCHMD5="/root/out" if [ "`root | egrep -c "scan"] then echo " yes found" exit else echo " not found "; then mkdir /root/scan fi echo -en "" > $FOLDER"/out.txt" find $SEARCH -type f > files.txt while read file; do if [ $(egrep -c $(md5sum "$file" | awk '{print $1}') "$FOLDER/out.txt") -gt "0" ]; then mv "$file" $DEPLACE && chmod 600 all file transfer /root/scan fi done <files.txt
ولا حاجة لكل مره انه يقرأ md5 للمجلد الذي يوجد به 200 ملف
واشكرك جزيل الشكر
اترك تعليق:
-
الاخ 0 بلاك و الاخ سيلنت هاكر
شكرا لكم جزيل الشكر والعرفان
وسأقوم بالتجربة حاليا
وسأرد لكم خبر بأذن لله بعد التجربه
اترك تعليق:
-
آسف على التأخر قرأت الموضوع الآن فقط.
السكربت كالتالي:
كود:#!/bin/bash FOLDER="/home/GNU/md5checks" SEARCH="/home/GNUFILES" DEPLACE="/root/ppppp" echo -en "" > $FOLDER"/out.txt" find $FOLDER -type f | while read file; do md5sum "$file" 1>>$FOLDER"/out.txt"; done find $SEARCH -type f > files.txt while read file; do if [ $(egrep -c $(md5sum "$file" | awk '{print $1}') "$FOLDER/out.txt") -gt "0" ]; then mv "$file" $DEPLACE fi done <files.txt
ملاحظة: لم أجرب السكربت، كتبته الآن وبسرعة والتجريب على مسؤوليتك
تحياتي.
تعديل: السكربت عند تفيذه لا يُظهر أي رسالة (يعمل صامتا) لهذا يمكنك التعديل عليه لكي يُظهر بع الرسائل على حسب رغبتك لكي لا تشعر بالملل أثناء تنفيذه.
اترك تعليق:
-
السلام عليكم ورحمه الله وبركاته
اخى الكريم اعتذر لتأخرى وذلك لانى كنت مسافر
لقد كتبت هذا البرنامج من فتره والغرض منه كان وجود الكثير من الفيروسات التى اكتشفتها
ولم يستطع برنامج الانتى فيروس الخاص بالشركه ان يكتشفها فكنت اقوم بأخذ ال md5 للفيروسات
ثم عمل سيرش بهذا البرنامج لمطابقه ال md5 لجميع ملفات اجهزه الشركه واذا وجد فانه يكون فيروس
وقد قمت بعمل بعض التعديلات على البرنامج الاصلى لكى يلائم ما طلبته على حسب فهمى
اولا :
يقوم البرنامج بالبحث فى مجلد باسم md5checkss لا تنسى ان هناك حرفين s وهذا الملف لابد ان يتواجد فى نفس مسار البرنامج هذا المجلد يحتوى على عده ملفات بامتداد .md5 دوت ام دى فايف
وهذه الملفات هى ملفات نصيه وتحتوى بداخلها على ال md5 المراد البحث عنه كالتالى
ملف x.md5
كود:[LEFT] a044a2a0c8103fc3e5b7e18b0f7de1c8 1c6f1c48c560432893fd0cc8a2d579b0 w015b9134dad7e29e7d2d6b5f5c8c2fc [/LEFT]
كود:[LEFT] c9e6b6f65c65dc0c0c420443066e941f d8e6b6f65c65dc0c04204430666e941f m7e6b6f65c6420443066e941fooyyggg h5e6b642044306dc0c0c4204430i941f [/LEFT]
ثانيا :
يسأل البرنامج المستخدم عن المسار الذى يريد البحث فيه عن الفيروسات او الملفات وهى عمليه يتوقف وقتها على سرعه المعالج والذاكره وايضا كم المسارات فى المجلد وعدد الملفات به وايضا لابد ان تأخذ فى الاعتبار انه لابد من تشغيل البرنامج بصلاحيات الروت اذا اردت البحث فى مجلدات عليها صلاحيات
ثالثا :
يقوم البرنامج بمطابقه ال md5 لجميع الملفات التى وجدت بال md5 المخزنه بالذاكره واذا وجد تطابق فانه يقوم بطباعه عدد الملفات التى وجدت وايضا يقوم بطباعه مسارها
اليك البرنامج
test.py
كود:[LEFT]# -*- coding: utf-8 -*- import sys, os, hashlib def md5_for_file(f, block_size=2**20): m=open(f) counter=0 md5 = hashlib.md5() while True: counter+=1 data = m.read(block_size) if not data: break md5.update(data) return (md5.hexdigest(),str(counter)) def generate_md5_main(xpath): current_dir=xpath open_write_file=open(current_dir+os.sep+'final_md5.md5', 'w') xpath=unicode(xpath+os.sep+'md5checkss') file_dir=loop_for_files(xpath) if file_dir != 'error' and len(file_dir)>0: for md5_file in file_dir: if md5_file.endswith(".md5"): open_file=open(md5_file, 'r') reading_it=open_file.read() open_file.close() open_write_file.write(reading_it) open_write_file.close() print 'collecting all md5 in one file -----> complete' def loop_for_files(xpath): if os.path.isdir(xpath): from_file_allpath=[] for root, dirs, files in os.walk(xpath): for name in files: fname = os.path.join(root, name) from_file_allpath.append(fname) return from_file_allpath else: print 'the path you enterd not exist' return'error' def main(): xpath = os.getcwd() # the program root directory generate_md5_main(xpath) #generate "final_md5.md5" in the programe root open_file=open(xpath+os.sep+'final_md5.md5', 'r') reading_it=open_file.read() open_file.close() all_md5_dic=[] matched_files=[] for md5_line in reading_it.split('\n'):#reding all md5 from the generated file to memory ##warnning if the generated file is too big it will eat your memory md5_line=md5_line.strip() if md5_line!='': all_md5_dic.append(md5_line) print 'reading data to memory -----> complete' #ask the user for the place where to start searching for files print 50*'*' print "plz take care if u want to search in places with administrator permession you need to run the script as root" print "enter the path to search for matched file like '/home/x'" print 50*'*'+'\n' file_search_start=raw_input("enter the path : ") print '\n\tplease wait this may take some time depending on your cpu...' file_search_start=file_search_start.strip() file_dir=loop_for_files(file_search_start)#list all the fiels found print 'searching for all the files in the selected path -----> complete' print 'start to comparison this may take some time .....' if file_dir != 'error' and len(file_dir)>0: for found_file in file_dir: chek_md5=md5_for_file(found_file)#check the md5 of the file if str(chek_md5[0]) in str(all_md5_dic):#check if the md5 is in our memory database matched_files.append(found_file) print 'comparison processing -----> complete' if len(matched_files)>0: print '\nwe found '+str(len(matched_files))+' matched files\n'+50*'-' for F_Matche in matched_files: print F_Matche#********you can do what ever you want here copy the file or move it********* print 50*'-' else: print 'we didnt found any match' if __name__ == '__main__': main() [/LEFT]
ارجو ان يكون هذا هو الكود الذى تبحث عنه
اذا كان هناك اى استفسار لا تتردد فى السؤال
ارجو منك الدعاء لى ولوالدى
اترك تعليق:
-
شكرا اخي ايهاب وارجوا ان لا اكون قد ازعجتك بطلي اعتذر لك
ارجوا ان تستغل وقتك في امر يكون بالنفع والفائده لك وتتحفنا به هنا في المجتمع
السكربت انا محتاجه في امر ما موكل لي بكتابته
وهو موجوده بشكل نظري كامل في المشاركه رقم 16
اما بالنسبة لهذه الجمله في الاخير
فقد كتبت بالخطأ
هذا بالنسبة للجزء الاول
وشكرا لمساعدتك وجزاك الله كل خير
اترك تعليق:
-
الاسكريبت سيكون بطئ جدا وسيأخذ وقت طويل للتنفيذ فلماذا تحاتجه؟
إذا كان أمرا ضروريا سنحاول مساعدتك إن شاء الله أما إذا لم يكن ضرورى فأعتقد انه لا داعى لإضاعة وقت فى كتابة اسكريبت بلا غرض مجدى
آسف وأرجو أن تفهم مقصدى
هذا بالنسبة للجزء الاول
عموما إشرح فائدة الاسكريبت من فضلك
اترك تعليق:
-
السلام عليكم اخ ايهاب مشكور جدا على تعاونك يا غالي
اخ ايهاب لو قسمنا مثلا القسم الاول من سكربت يأخذ القيم من مجلد موجود على المكان التالي
/home/GNU
اسم الملف هو مثلا md5checks
موضوع فيه اكثر من 200 ملف منوعات الامتدادات
هل يمكن ان نجعل الجزء الاول يقوم بقرأة الملفات الموجود في المجلد md5checks كامله لأنه من صعب انه نعمل 200 ملف بشكل يدوي هذا في الجزء الاول
الجزء الثاني :
نجعل القيم التالي يتم قرأتها من ملف md5checks تخزن في ملف اسمه out ليحفظ القيم md5 بها التي حسبناها اي يعني 200 ملف السابقات
ونجعل التخزين يكون على الشكل التالي
d9e6b6f65c65dc0c0c420443066e941f gnu.sh
d9e6b6f65c65dc0c04204430666e941f gnu2.sh
d9e6b6f65c6420443066e941fooyyggg gnu1.sh
d9e6b642044306dc0c0c4204430i941f gnu3.sh
اي الهاش + اسم الملف
اما بالنسبة للجزء الثالث
جزئية البحث داخل الجهاز
اي يقوم السكربت بعمل هل بحث هل القيمة md5 الموجوده داخل ملف out متطابقه مع اي ملف داخل الجهاز طبعا يبحث من خلال القائمة الموجوده داخل ملف out ويقوم بمقارنتها مع الملف الموجود داخل الجهاز
الجزئية الاخيره من السكربت
هو ان يقوم بنقل الملف المتطابق مع md5 الموجود داخل ملف out الى المسار التالي داخل الجهاز
/root/ppppp
هذا ما اردت السكربت ان يقوم به
واشكر الاخ ايهاب على مساعدته لي وانتظر البقية للمساعده وشكرا لكم
اعذروني لجلي البرمجي في باتش شل وشكرا لكم
هذا بالنسبة للجزء الاول
اترك تعليق:
-
هل هذا يفيدك ؟
كود PHP:#!/bin/bash
#Collect source file info
SRC_FILE_SIZE=$(cksum "$1" | cut -d " " -f 2)
SRC_FILE_SUM=$(md5sum "$1" | cut -d " " -f 1)
find $2 -iname '*' -size ${SRC_FILE_SIZE}c -print0 | xargs -0 md5sum | grep -v "$1" | grep "$SRC_FILE_SUM" | sed 's/\(\t\+\| \+\)/ /g' | cut -d " " -f 2
exit 0
والناتج يكون أسماء الملفات يمكن تحويلها للحذف أو النقل إلى مكان آخر
فى حالة النقل يجب أن تراعى أنه يمكن العثور على ملفات بنفس الاسم فى أماكن مختلفة وسيتم كتابتها فوق بعضها أى سيتم حذف ملفات <<< لا خوف من هذا فيجب أن يكون جميع الملفات نسخ لملف واحد
فى النهاية يجب أن تستخدم الاسكريبت بحرص شديد حتى لا تفقد بيانات فلم تتم تجربتته جيدا!
همسة : ما حاجتك لهذا الاسكريبت؟
اترك تعليق:
-
السلام عليكم ورحمه الله وبركاته
معذره اخى فلم ارى موضوعك الا متأخرا لكثره الاعمال
انا استطيع مساعدتك لكن باستخدام لغه بايثون
فاذا كنت تريد الكود فقط اخبرنى وسأقوم بكتابته لك
اترك تعليق:
-
اول ثلاث اسطر يقوم بأستخراج ام دي 5 للملفات الموجود داخل مجلد md5s
وبعدها ثلاث اسطر يقوم بحساب md5 لها
والاخير يقوم بالبحث عنها داخل الجهاز
اعتقد ان عملي خطأ ارجوا من المشرفين والاعضاء المساعده
اترك تعليق:
-
حاولت اكتب شوية اسطر من السكربت بما اني لا افقه شيء بالشل بس يكفي شرف المحاوله
هل لأحد المساعده في تصحيح واكمال السكربت
#!/bin/bash
# read md5
for file in `md5s` ; do
md5sum gnu.sh /root/md5.out
done
for file in `md5s` ; do
cat /root/md5.out
done
find . -type f -name "/root/md5.out"
do
/
done
اترك تعليق:
اترك تعليق: