اذهب إلى المحتوى

محمد أحمد العيل

الأعضاء
  • المساهمات

    308
  • تاريخ الانضمام

  • تاريخ آخر زيارة

  • عدد الأيام التي تصدر بها

    27

أجوبة بواسطة محمد أحمد العيل

  1. يُمكن استخدام أمر wget:

    wget --mirror -p --convert-links -P ./directory url

    حيثُ url رابط الموقع.

    • الخيّار mirror-- لتفعيل التّصوير المرآوي Mirroring.
    • الخيّار p- لتنزيل الملفّات الضّروريّة لعرض صفحات الويب.
    • الخيّار convert-links لتحويل الرّوابط إلى روابط محليّة يُمكن تصفّحها دون الحاجة للاتّصال بالموقع الأصلي.
    • الخيّار P- لتحديد المجلّّد الّذي نحفظ فيه الموقع ومتعلّقاته.
    • أعجبني 1
  2.  يؤدّي أمر rename هذه المهمّة. على افتراض أنّك موجود في المجلّد حيثُ توجد الملفّات:

    rename 's/DGACT/DGIC/' DGACT*

    حرف s للدّلالة على أنّنا نريد استبدال عبارة مكان أخرى (Substitution)، وDGACT العبارة المُبدَلة، وDGIC العبارة المُبدَل بها؛ ثمّ أخيرًا الملفّات الّتي نُريد تطبيق الأمر عليها، وهي في حالتنا جميع الملفّات الّتي تبدأ بDGACT.

    • أعجبني 3
  3. مجلَّد etc/profile.d/ موجود لهذا الغرض، حيثُ توضع به الإعدادات الموجّهة للاستخدام العامّ في النّظام.لإضافة مجلّد إلى مسار PATH بحيث يُصبح متاحًا دائمًا لكلّ المستخدمين نتبع الخطوات التّاليّة.


    نسجّل الدّخول لحساب المستخدم الجذر:

    su

    ثمّ ننفّذ الأمر:

    echo 'pathmunge /usr/lib/program/bin' > /etc/profile.d/program.sh

    يُنشئ الأمر السّابق ملفًّا في المسار  etc/profile.d/program.sh/ ويكتب الأمر  pathmunge /usr/lib/program/bin ضمن هذا الملفّ. تُستخدَم دالّة pathmunge على توزيعات RedHat وCentOS وFedora لإضافة مسار إلى متغيّر البيئة PATH. أصبح لدينا الآن سكريبت به أمر لإضافة المجلّد إلى متغيّر البيئة PATH.

    نجعل الملفّ قابلًا للتّنفيذ عبر الأمر:
     

    chmod +x /etc/profile.d/program.sh

    لم يتبقّ الآن سوى إعادة تحميل إعدادات المستخدم الحالي لأخذ التّغييرات في الحسبان:

    . /etc/profile

     

  4. يُمكن استخدام أمر find للبحث عن هذه الملفّات ثمّ حذفها:
     

    find /Path/to/folder -type f -name "data*" -delete 


    حيث /Path/to/folder/ مسار المجلّد الّذي توجد به الملفّات، و"*data" تعبير نمطي Regular epression للدّلالة على كلّ الملفّات الّتي تبدأ بكلمة data. خيّار delete- لحذف الملفّات. للمزيد حول find راجع درس كيف تستخدِم أمرَي find و locate للبحث عن الملفّات على Linux.

    ينبغي الحذر قبل استخدام خيّار delete- مع أمر find حتّى لا تقع في أخطاء.

  5. أمر lsof يؤدّي هذه المهمّة.

    يُستخدَم أمر lsof لسرد قائمة بالملفّات المفتوحة (lsof = list open files)؛ الخيّار i- يُعطي قائمة بالملفّات المفتوحة المرتبطة باتّصال عبر الشّبكة الموافقة للعنوان الموالي للخيّار. صيغة العنوان هي التّاليّة:
     

    lsof -i [IPVersion][Protocol][Host][:Port or Service]

    حيث

     

    • IPVersion: إصدار بروتوكول IP 4 أو 6.
    • Protocol: بروتوكول الاتّصال المستخدَم، TCP أو UDP.
    • Host: اسم أو عنوان المستضيف.
    • Port or Service: رقم منفَذ أو اسم خدمة.

    في حالتنا نُريد الملفّات المرتبطة باتّصال بالمنفَذ رقم 8080، يكون الأمر إذن:

    lsof -i :8080

     

    • أعجبني 1
  6. نفترض أنّك تريد البحث عن كلمة one وإبداله بtwo ضمن ملفّ باسم file1 وحفظ النّاتج في ملفّ باسم file2. الأمر التّالي يؤدّي هذه المهمّة:

     

    sed 's/one/two/g' file1 > file2


    خيّار s للاستبدال (Substitute)؛ و g لتطبيق الأمر على كامل الملفّ، أيّ في كل مرة يجد فيها كلمة one  وليس فقط أوّل مرة. علامة < تُستخدم لحفظ نتيجة الأمر قبلها في ملفّ جديد. راجع درس مقدّمة إلى إعادة توجيه الإدخال/الإخراج (i/o) في لينكس .

    إذا أردنا إحداث التّغيرات في الملفّ نفسه (أي تغيير محتوى الملفّ بحيث تحلّ two مكان one) نستخدم خيّار i-:

    sed -i 's/one/two/g' file

     

  7. يُمكن استخراج الصّوّر الموجودة في الملفّ بفكّ ضغطه. تدلّ tar أنّ مجموعة من الملفّات مجموعة ضمن نفس الملفّ، أما gz فتعني أنّ المجلَّد المُجمَّع قد ضُغِظ. الأمر التّالي يفكّ ضغك ملفّ باسم images.tar.gz ثمّ يستخرج ما به:
     

    tar -xvzf images.tar.gz

     

    • خيّار  x- للدّلالة أنّنا نريد فك ضغط ملفّ وليس ضغطه.
    • خيّار v- لإظهار أسماء ومسارات الملفّات المستخرَجة.
    • خيّار z- لأنّ الملفّ من gzip (امتداد gz.).
    • خيّار f- اسم ومسار الملفّ المضغوط. يجب أن يكون هذا الخيّار هو دائمًا الأخير ضمن خيّارات أمر tar، مباشرةً قبل اسم الملفّ.
  8. الأمر التّالي يطبع لائحة بكلّ أسماء المستخدمين:
     

    cut -d: -f1 /etc/passwd



    يحوي ملفّ etc/passwd/ معلومات أساسيّة حول حسابات المستخدمين، مثل معرّف المستخدم User ID، معرّف المجموعة Group ID، المجلّد الشخصيّ للمستخدم، وغيرها. الملفّ عبارة عن أسطر يحوي كلّ واحد منها سبعة حقول يُفصَل بينها بنقطتيْن عموديّتيْن (:). يمثّل الحقل الأوّل اسم المستخدم.

    يُستخدم أمر cut لاستخراج جزء من أسطر في ملف نصّي:

    • الخيّار d- يُحدّد الفاصل بين الأعمدة، أي أنّ الأمر عندما يجد نقطتيْن عموديّتيْن سيعتبر ما بعدهما عمودا (حقلًا) جديدًا.
    •  
    • الخيّار f- يعني الحقل (العمود) أو الحقول التي نُريد الاحتفاظ بها من الملفّ. يهمّنا هنا الحقل الأوّل، أي اسم المستخدِم.


    بالنّسبة لإضافة أو حذف مستخدمين أحيل إلى درس كيف تُضيف أو تحذف مستخدمين على خادوم Ubuntu 14.04.

    • أعجبني 1
  9. يوجد أمر su لهذا الغرض.

    يُساعد الأمر whoami (مَن أنا؟) في عدم الخلط بين المستخدِمين حيثُ يُظهر اسم الحساب الجاري استخدامُه.

    في المثال التّالي نُظهِر اسم المستخدِم الحالي (user1) عن طريق whoami  ثمّ ننتقل إلى الحساب user2 عن طريق أمر su (ستُطلب منك كلمة سرّ هذا الحساب)، ونتأكّد من الحساب الّذي نستخدمه (user2) ثمّ نخرج من هذا الحساب عبر الأمر exit لنعود إلى الحساب الأوّل (user1).
     

    $ whoami
    user1
    $ su - user2
    Password:
    $ whoami
    user2
    $ exit


    إذا أردت الانتقال إلى الحساب الجذر (root) فلا داعيَّ لتحديد اسم المستخدِم:

     

    $ whoami
    user1
    $ su -
    Password:
    $ whoami
    root

     

  10. المتغيّر PATH واحد من متغيرات كثيرة تُعرف بمتغيّرات البيئة Environment variables. بالمختصر، متغيّرات البيئة هي مجموعة من المتغيّرات تؤثّر قيّمها على سلوك البرامج أثناء تنفيذها. مثلا قيمة متغيّر البيئة HOME تحدّد مسار المجلّد الشخصي للمستخدم. إذا أراد برنامج حفظ ملفّ في المجلّد الشخصي للمستخدِم الّذي يُشغله فكلّ ما عليه هو النّظر في قيمة متغيّر البيئة HOME.

    بالنسبة لمتغيّر البيئة PATH، فالهدف منه تحديد المسارات الّتي يبحث فيها النظام عن برامج أو أوامر. نفترض أنّ أمرًا باسم command يوجد على المسار usr/bin/. إذا كان المسار المذكور موجودًا البيئة PATH فتكفي كتابة command في سطر الأوامر لتنفيذ الأمر. أمّا إذا لم يكن موجودًا فيجب كتابة كامل المسار usr/bin/command/ لتنفيذ الأمر.

    يُستخدم الأمر printenv لعرض كلّ متغيّرات البيئة الموجودة في النّظام.

    printenv

    لعرض محتوى متغيّر بيئة واحج فقط يُمرّر اسم المتغيّر للأمر:

    printenv PATH

    النّتيجة عندي (تتغيّر من جهاز لآخر):

    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/jvm/java-1.7-oracle/bin

    ملحوظة أخيرة: تُكتب متغيّرات البيئة دائمًا بأحرف كبيرة.

    • أعجبني 1
  11. يوجد فرق بين الاثنين. عند استخدام الظفرين'' فلن يُفسّر ما بينهما؛ أمّا عند استخدام علامة الاقتباس "" فسيحدُث ذلك.

    بالعودة إلى مثالك. جرب إنشاء متغير باسم Name وأعطه قيمة ثم ضعه بين ظفرين '' وجرّب طباعته عن طريق أمر echo. كما يلي مثلًا:
     

    Name=Ahmed
    echo 'My name is $Name'


    النّتيجة:
     

    My name is $Name



     أعد نفس الشيء مع علامتي الاقتباس "".
     

    Name=Ahmed
    echo "My name is $Name"
    


    النّتيجة:

     

    My name is Ahmed

     

    • أعجبني 2
  12. تستخدِم أداة fsck هذا المجلَّد من أجل إصلاح الأعطاب في نظام الملفّات (نظام الملفّات Files system وليس العتاد Hardware). توجد معرّفات inode الخاصّة بالملفّات المفقودة في مجلّد lost+found. تستخدم `fsck` هذه المعرّفات في محاولة إصلاح الأعطاب. كونُ المجلّد فارغًا يعني ألّا أعطاب مُلاحظة في نظام الملفّات.

    يوجد عادة مجلّد lost+found لكلّ نظام ملفّات.

    • أعجبني 2
  13. تُحيل هذه الأعداد إلى الفصل أو المقطع ضمن التّوثيق حيثُ توجد هذه الأوامر. يُمكن معرفة فصول التّوثيق عند تنفيذ الأمر man man. هذه الفصول هيّ:

    • 1: برامج أو أوامر Shell.
    • 2: نداء للنّظام System call.
    • 3: دوّال مكتبة C.
    • 4: ملفّات خاصّة.
    • 5: صيّغ ملفّات واصطلاحات.
    • 6: ألعاب.
    • 7: متفرّقات.
    • 8: أدوات لإدارة النّظام.


     

    • أعجبني 2
  14. هذا يعتمد على نوعيّة وهيئة السّجلّات Logs الّتي تُريد استخراج عناوين IP منها.

    مثلا في سجلّاّت Apache يوجد عنوان IP في العمود الأوّل من كل سطر ضمن ملفّ السّجلّ. في هذه الحالة يُمكن استخراج عنوان IP عن طريق الأمر التّالي:

    cut -d ' ' -f 1 logFile > ips.txt

    يُستخدم أمر cut لاستخراج جزء من أسطر في ملف نصّي.

    الخيّار d- يُحدّد الفاصل بين الأعمدة، أي أنّ الأمر عندما يجد مسافة سيعتبر ما بعدها عمودا جديدًا.

    الخيّار f- يعني الحقل (العمود) أو الحقول التي نُريد الاحتفاظ بها من الملفّ. في حالة سجلّات Apache يوجد عنوان IP في العمود الأوّل، لذا نُحدّد الرّقم 1.

    logFile هو اسم الملّف الّي نُريد استخراج العناوين منه.

    نحتفظ بنتيجة تنفيذ الأمر في ملفّ باسم ips.txt

     

    يُمكن أيضًا استخدام grep وتعبير نمطي Regex لاستخراج عنوان IP كما يلي:

    grep -oE '.*([0-9]{1,3}[\.]){3}[0-9]{1,3}*'

    الخيّار o- لاستبقاء جزء السّطر الّذي يُوافق التّعبير النمطي فقط.

    توجد ملحوظة في الطّريقة الأخيرة. عادة يوجد إصدارُ المتصفّح في السجلّات، إن كان رقم الإصدار مكوَّنًا من 4 خانات فسيظهر محتوى السّطر الموجود بين عنوان IP ورقم إصدار البرنامج في النّتيجة. يُمكِن التّغلب على هذا الأمر باستبقاء أول مطابقة للتّعبير النمطي فقط في كلّ سطر، ولكن في هذه الحالة من الأفضل استخدام cut (على كلّ حال استخدامُ cut يستغل موارد أقلّ من الجهاز).

    مثال على الملحوظة الأخيرة (سطر من سجلّ Apache لديّ في المدوَّنة :) )

    197.241.75.122 - - [31/Mar/2015:10:49:02 -0600] "GET /2013/03/%D8%B1%D8%B3%D8%A7%D9%84%D8%A9-%D8%AE%D8%B7%D8%A3-grub-error-no-such-partition-grub-rescue/ HTTP/1.1" 304 174 "https://www.google.com/" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) MxNitro/1.0.0.300

     

    في آخر السّطر يوجد رقم إصدار مكوِّن في متصفّح المستخدِم (MxNitro/1.0.0.300). صيغة هذا الرّقم تُوافق هيئة عنوان IP ولكنّه ليس عنوان IP.

     

    • أعجبني 1
×
×
  • أضف...