بایگانی برچسب: s

درست کردن خودکار فهرست فایل های دایرکتوری

یک ایمیل داشتیم که درخواست می کرد دایرکتوری audio توی سرور من قابل خوندن باشه که بشه یک ضرب کل رادیو گیک ها رو ازش گرفت. اینکار رو می شه با باز گذاشتن اتوایندکس درست کرد که معمولا کار خوبی نیست یا می شه یک اسکریپت کوچیک براش نوشت. اینطوری:

اگر نمی خواین ۱۲ دقیق ویدئو رو ببینین، خلاصه اش اینه که یک اسکریپت ساده به این شکل فایل اچ تی ام ال مورد نظر رو تولید می کنه :

#!/bin/sh

cd /home/jadi/public_html/audio/
echo "<html><body>" > index.html
echo "<ul>" >> index.html

for i in `ls *mp3 -tr`
do
    echo "<li>" >> index.html
    echo \<a href="$i"\>$i\</a\> >> index.html
    echo \</li\> >> index.html
done
echo "</ul>" >> index.html
echo "</body></html>" >> index.html

و کافیه این رو توی کرون بذاریم تا هر روز یکبار اجرا بشه:

07  12  *   *   *   /home/jadi/public_html/audio/makeindex.sh

و حالا می تونین مستقیم دایرکتوری http://jadi.net/audio رو ببینین؛ البته اگر شما هم می خواین دانلود کنین اجازه بدین یک کم زمان بگذره که همه با هم مشغول گرفتن اینهمه فایل نباشیم (:

اشتباه زدم، فاک!

سعید توی کامنتش در مطلب خداحافظ شل، سلام زیشل، یه برنامه جالب معرفی کرده: د فاک. این برنامه بامزه دقیقا همونی است که بعضی‌هامون وقتی یک تیکه از یک کامند رو اشتباه می‌زنیم می‌گیم: «د فاک/چرا اجرا نشد؟». اگر درست بعد از اون کامند بزنین fuck خودش می‌فهمه مشکل دستور قبلی است، سعی می کنه تصحیحش کنه و با یک انتر شما، اجراش کنه. مثلا:

برنامه با پایتون است و برای نصبش کافیه بزنین:

sudo -H pip install thefuck

و بعد از اولین fuck، خودش راهنمایی می کنه که چی رو باید کجا بنویسین. احتمالا یک کد کوتاه رو در bashrc. یا zshrc. و بعد اجرای دوباره bash یا zsh.

هواشناسی در ترمینال: مثل اینکه تا یکشنبه هم فضای بارونه

سایت wttr.in یک هواشناسی تحت ترمینال است. جذابیت خاص؟ با curl که یک ابزار بسیار قدرتمند لینوکسی برای دریافت یو آر ال‌ها با تکنیک‌ها و مکانیزمهای و گزینه‌های مختلف است هم می تونین بهش درخواست بدین. مثلا اگر لینوکس (یا کرل) دارین کافیه این دستور رو بزنین:

curl http://wttr.in/tehran

دستورات گنو/لینوکس بالاخره در شل ویندوز

اگر مطالب من رو دنبال کنین یا رادیوگیک می دونین که هر بار حرف از ویندوز شده من گفته‌ام که یکی از مهمترین قدم‌های پیشرفت ویندوز می تونه اضافه کردن دستورات فوق العاده خط فرمان گنو/لینوکس به ویندوز باشه. همین حرف دقیقا وقتی تکرار می شد که من مطالب چرا گنو/لینوکس رو دوست دارم رو می‌نوشتم و حواسمون بود که هفتاد هشتاد درصد کارهایی که می کنم در واقع مربوط به دستورات شل و گنو است.

امکان اضافه کردن این برنامه‌ها به ویندوز از طریق پروژه های جانبی مثل سیگ وین بوده ولی حالا خبر فوق العاده برای دنیای ویندوز اینه که مایکروسافت اعلام کرده در آینده نزدیک پوسته خط فرمان اصلی لینوکس یعنی بش و دستورات و حتی پشتیبانی از باینری های اوبونتو رو به ویندوز ۱۰ اضافه خواهد کرد. اگر این اتفاق بیافته عملا ویندوز بالاخره دارای حجم عظیمی از برنامه‌های مفید خط فرمان می شه که نبودشون شدیدا هر آدم حرفه ای که نیاز به ssh، rsync، grep، … داشته باشه رو آزار می‌داده.

لازمه یادآوری کنم که یکی از مزیت های عظیم سیستم های مک OSX به ویندوز، داشتن همین دستورات در خط فرمان بوده که باعث می شده افرادی با نیازمندی های فنی بتونن ازش استفاده کنن. حالا ویندوز هم می خواد از قافله عقب نمونه. این احتمالا جذابترین خبر در مورد ویندوز در سال ۹۵ خواهد بود.

هرچیزی که لازمه در مورد «۲۸ بار بک اسپیس» بدونین

این روزها همه دارن از باگ ۲۸ تا بک اسپیس‌ حرف می‌زنن. باگی بعضی‌ها می‌نویسن اجازه می‌ده به هر لینوکسی دسترسی پیدا کنین. هر چقدر هم نویسند‌ه‌ای از منطق و لینوکس دورتر باشه، خطرات بزرگتری رو براش قائل می‌شه. این باگ اولین توسط اسماییل ریپول و هکتور مارکو کشف شده و اینجا نگاهی دقیق داریم به اجزاش برای کسانی که دوست دارن بدونن واقعا ماجرا چی بوده و چه عواقبی داره.

آیا باگ واقعا وجود داشته؟

اما آیا این باگ وجود داره؟ جواب یک بله محکم و همراه پوزخند است. این باگ سوتی بدی بوده که از برنامه‌نویس‌های خوب در یکی از برنامه‌های بسیار پیچیده انتظار نمی‌رفته. این باگ روی گراب تاثیر می‌ذاره. ویندوزها از گراب استفاده نمی‌کنن و به جاش بوت لودرهای خودشون رو دارن که امکانات و توانایی‌های محدودتری داره و به شکل اختصاصی برای ویندوز توسعه پیدا کرده. گراب اونی است که در مرحله اول یک کامپیوتر رو بوت می‌کنه و بعد کنترل کامپیوتر رو به یک سیستم‌عامل (از جمله لینوکس یا ویندوز) تحویل می‌ده. اگر گراب نباشه سیستم‌عامل‌ها مجبور هستن خودشون یک ضرب کامپیوتر رو بوت کنن و دیگه امکان حضور چند سیستم عامل روی یک کامپیوتر یا بوت شدن کامپیوتر حتی بعد از خراب شدن سیستم عامل وجود نخواهد داشت.

باگ ۲۸ تا بک اسپیس چی بوده؟

این باگ وقتی کار می‌کرده که شما گراب داشته باشین و روی گراب پسورد گذاشته باشین. اتفاقی که خیلی کم می‌افته. گفته می‌شه در وضعیتی که قراره گراب از شما پسورد بپرسه، ۲۸ بار بک اسپیس رو بزنین سیستم کرش می‌کنه و شما به خط فرمانی می‌رین که دستورات بسیار محدودی داره که به منظور تعمیر سیستم گراب یا بوت کردن سیستم عامل‌هایی که روی کامپیوتر نصب شده تعبیه شده‌اند.

این اشتباه بدون شک خیلی ضایع و خیلی خنده داره (: البته تا الان همه لینوکس‌هایی که باهاشون برخورد داریم مشکل رو اصلاح کردن که خودش قشنگی دنیای آزاده. در واقع اصلا گفته نمی‌شه که اینطرف هیچ باگی نیست بلکه گفته می‌شه که باگ‌ها به محض کشف یا اعلام (یا حتی قبل از اعلام) رفع و در آپدیت‌های سریع، خنثی می‌شن.

آیا هکرها به هر لینوکسی دسترسی پیدا کردن؟

این قسمت جایی بود که من تصمیم گرفتم در این مورد بنویسم. بعضی مقاله‌های سایت‌های ایرانی با هیجان می‌نویسن که دیگه همه لینوکس‌ها در معرض خطر هستن و اطلاعات هر کسی قابل دستیابی توسط هکرها. این مشخصا از دو جور اشتباه می‌یاد:

  1. عدم درک شکل کارکرد جهان. برای اینکه بفهمین الان هکرها توان نفوذ به هر کامپیوتری رو ندارن کافیه به این فکر کنین که دارین این مطلب رو کجا می‌خونین. اگر این مطلب از روی اینترنت، تبلت، چت و .. به شما رسیده یعنی مهمترین کامپویترهای دینا که اتفاقا همه هم لینوکسی هستن دارن درست کار می کنن (: به این می گن استدلال با توجه به دیدن نتایج. لازم نیست من باگ رو درک کنم تا بفهمم که آیا همه کامپیوترها تحت سیطره هکرها هستن یا نه (: کافیه به اطرافم نگاه کنم. همونطور که لازم نیست سال‌ها در این مورد بحث کنم که فلان مدل حکومتی باعث پیشرفت می‌شه یا نه و کافیه نگاه کنم ببینم کدوم کشورها در حال پیشرفت هستن.

  2. عدم درک دنیای لینوکس و ویندوز و امنیت. اصولا این باگ داره در لایه‌ قبل از بوت شدن لینوکس اتفاق می‌افته و از طریق دسترسی فیزیکی. یک اصل خیلی خیلی مهم در دنیای امنیت هست که هیچ وقت نباید فراموشش کنین! این اصل می‌گه لایه اول امنیت،‌ امنیت فیزیکی است. در دنیای امنیت می‌گن اگر حمله کننده به «فیزیک» دستگاه مورد حمله دسترسی داشته باشه، صحبت کردن از هر شکل دیگه امنیت بی‌معنی است. این باگ – که خیلی هم ضایع بوده – به شما اجازه می‌داده که به هارد کامپیوتری که بهش دسترسی فیزیکی دارن دسترسی پیدا کنین. این مساله در همه سیستم‌های دیگه هم صادقه. اگر شما دسترسی فیزیکی دارین اصولا نیازی به این باگ نیست، کافیه هارد رو در بیارین و توی یک کامپیوتر دیگه بذارین یا با یک یو اس بی دیسک لایو یا یک سی دی لایو کامپیوتر رو بوت کنین یا هر روش دیگه. در این سطح تنها بحث امن کننده اطلاعات شما می‌تونه رمزنگاری باشه ولی سخت افزار رو هیچ چیز نمی‌تونه از حملات فیزیکی حفاظت کنه.

اگر این بحث براتون عجیبه، می‌تونم دو تا ویدئو درست کنم که توش ببینین چطوری هر ویندوز و هر لینوکسی با داشتن دسترسی فیزیکی قابل ورود هستن.

جمع بندی

گراب سیستم بوت کننده کامپیوتر و تحویل دهنده سخت افزار به سیستم عامل بعدی (لینوکس یا ویندوز) است. تقریبا همه لینوکس ها از گراب استفاده می کنن و اگر کسی روی گرابش پسورد گذاشته باشه، این امکان بوده که با ۲۸ بار زدن بک اسپیس وارد خط فرمان اضطراری گراب شد. این مساله یک سوتی ضایع و خنده دار برنامه نویسی بوده و حالا رفع شده و ارزش نرم افزار آزاد به همین رفع باگ‌ها در لحظه کشف است. ما لینوکسی‌ها باید خنده‌ها رو بپذیریم و سعی کنیم برنامه‌هامون کمتر و کمتر چنین باگ‌هایی داشته باشن. همه هم باید یادشون باشه که دسترسی فیزیکی عملا به معنی امکان ورود کاربر به سیستم است و تنها راه جلوگیری از ورود کسی که به کامپیوترمون دسترسی فیزیکی داره هیچ راهی‌ است؛ هرچند که می‌شه با رمزگذاری اطلاعات، دسترسی این آدم خبیث به اطلاعات‌ رو مسدود کرد.

آیا خط فرمان همه گنو/لینوکس‌ها شبیه همدیگه است؟

این سوال هوتن است و احتمالا خیلی‌های دیگه؛ همچنین آدم‌ها می‌خوان بدونن که تفاوت‌ توزیعهای لینوکس‌های مختلف مثل اوپن سوزه، فدورا، اوبونتو، دبیان و … چیه.

من مشابه این بحث رو مفصل در جاهای مختلفی توضیح دادم. مثلا در اینجا که می‌گه توزیع لینوکس چیه و اینجا که می‌گه چطوری یک توزیع رو انتخاب کنین؛ البته دقت کنین که اون کتاب تموم نشده و هنوز برای انتشار عمومی آماده نیست ولی خب یک جایی بالاخره باید لینک داد دیگه.

commandline

ااما برای تکمیل بحث، باید بگم که توزیع عملا ترکیبی از این‌ها است:

  • نرم افزارهای پیش فرضی که آدم های پشت توزیع انتخاب می‌کنن
  • منابع و مخازن اون توزیع یعنی برنامه‌هایی که می‌تونین بدون دردسر و با یک کلیک یا دستور نصب کنین
  • گرافیک، لوگو و …
  • دستورات خاص اون توزیع که خیلی وقت‌ها مربوط به تنظیمات یا مدیریت بسته‌های نرم افزاری می‌شن؛ مثلا توی دبیان apt برای نصب برنامه‌ها استفاده می‌شه، در فدورا yum و در سیستم‌های مبتنی بر آرچ pacman. مثال خوب دیگه می‌تونه مجموعه نرم افزارهای کنترل و مدیریت yast در اوپن سوزه.

حالا بخش عظیمی از چیزی که ما توی کامند لاین استفاده می‌کنیم و ازشون لذت می‌بریم محصولات پروژه ای به اسم gnu هستن که تقریبا در تمام توزیع‌ها نصب می‌شن و به همین خاطر بهتره به جای اسم لینوکس که فقط یک هسته است، از گنو/لینوکس که یک سیستم عامل کامله استفاده کنیم. حالا رابط ما با این دستورات محیطی ست به اسم پوسته‌ (یا شل‌ یا خط فرمان که همون صفحه سیاه با نوشته های سبز بالا است). اکثر پوسته‌ها یا دقیقا برنامه ای به اسم bash هستن یا چیزهایی تا حد خیلی زیادی مشابه با اون و در نتیجه وقتی توی خط فرمان یک لینوکس هستین، دستورات جالبش تقریبا در همه جا یکسانه و ترکیبی از دستورات پوسته و دستورات پروژه گنو.

نتیجه؟ از هر لینوکسی که استفاده می‌کنین، نود درصد کارهاتون مشابه است و اوه ده درصد هم مربوط می‌شه به عملیات بسیار مرتبط با اون توزیع مثل نصب و حذف برنامه‌ها یا دسترسی به کارت‌های شبکه و تنظیمات پیش فرض و اینجور چیزها. پس با هر توزیعی که کار می‌کنین و پشت هر توزیعی که می‌شینین، می‌تونین هک خوشحالی داشته باشین!