همه‌ی نوشته‌های تولستوی

مشکل fetchmail و offlineimap با gmail

در تلاش بودم با fetchmail و یا offlineimap از اکانت Gmail بک آپ بگیرم. ولی گویا به خاطر سیستم پیچیده Gmail که بخشی از آن شامل Web login هست متصل شدن از طریق این دو ابزار به سرویس imap برای gmail امکان پذیر نیست.

این موضوع را FAQ پروژه fetchmail هم تایید می کنه (مطالعه در اینجا). ولی به هر حال یه کم شک دارم که واقعا راه حلی در خط فرمان وجود نداشته باشه. برای همین اگه کسی در این موضوع تجربه و پیشنهادی داره ممنون می شم، کامنت بزاره.

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

ادامه خواندن مشکل fetchmail و offlineimap با gmail

فهرست مطالعه برای System Administrator ها

مدتها بود که دلم می خواست که یه فهرست مطالعه (Reading List) برای System adminstrator ها و Network Administrator ها در حد تجربه خود بنویسم. هی عقب می افتاد. امروز اولین پستش را میخوام بزنم.

چند نکته و ویژگی در مورد این لیست هست:
۱- در برخی تجربه‌ها در این سالها متوجه شدم که باید خیلی قبل تر مطلبی را می خوندم و یا باید می دونستم، ولی چیزی در موردش نمی دونم. برای همین به این لیست اضافه کردم
۲- این لیست یک تلاش کوچیک برای آکادمیک کردن مسیر رشد و یادگیری یک مدیر سیستم یا System Administrator است.
۳- تصمیم دارم این لیست را تاجایی پیش ببرم که شبیه یک دوره لیسانس سه سال یک نفر را پر کنه و یک نفر بتونه سه سال آموزش خودشو برای ورود و یا پیشرفت در بازار کار برنامه ریزی کنه.
۴- شروع لیست با کتاب‌های فارسی است. شاید انتقاد خیلی‌ها را به همراه داشته باشه، ولی من معتقدم یادگیری پایه‌ها، مبانی و اصطلاحات یک تخصص با زبان مادری کار و پیشرفت را خیلی تسهیل می‌کنه. البته مطمئنا در یک جایی به بعد مطالعه ترجمه ها دیگر کارایی لازم را نداره و مطمئنا در ادامه تغیریبا همه کتابها انگلیسی خواهد بود.
۵- این لیست برای هنرستانی‌های رشته کامپیوتر و کاردانی و کارشناسی کامپیوتر مناسب است.
۶- سعی می‌کنم تاجایی که امکان داره دلیل پیشنهاد مطالعه هر کتاب و توانایی هایی که بعد از اون باید بدست بیارید را مطرح کنم

فهرست اول
هدف: آشنایی با مفاهیم، اصطلاحات و ابزارهای پایه در شبکه

۱- اصول طراحی شبکه های کامپیوتری – احسان ملکیان
یکی از بهترین کتاب‌ها است که دید خوبی در مورد انواع شبکه بهتون می‌ده. برای شروع کتاب خیلی خوبیه

۲- اصول مهندسی اینترنت – احسان ملکیان
در این کتاب از لایه های شبکه، پروتکل ها و سرویس ها صحبت شده. ولی تاکید من تو مطالعه این کتاب برای اینه که جزو معدود کتابهایی هست که مفهوم سرویس را می‌تونه برای یک تازه کار روشن کنه و توضیحات خوبی داره

۳- نفوذگری در شبکه و روشهای مقابله – احسان ملکیان
یکی از کتابهای خوب فارسی هست که یک تازه کار را با زبان فنی امنیت آشنا می‌کنه.

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

فهرست را بعدا ادامه می دیم …

اصل «صحبت با انسان بالغ»

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

ادامه خواندن اصل «صحبت با انسان بالغ»

اصل اتوبوس جهانگردی

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

یه موضوع دیگه که هم موقع عیب یابی و هم موقع پیاده سازی و تغییرات خیلی هامون به عنوان پیشفرض در نظر می‌گیریم این هست که فرض می‌کنیم، وضعیت در همین چیزی که هست می مونه، فرض می کنیم، که خوب سخت افزار سالمه، فرض می کنیم دسترسی برقراره، فرض می کنیم اینترنت وصله و …

نکته مهم اینه که وقتی بر روی یک سرور عملیاتی شده داری کار می‌کنی اگه یک مرتبه هم این شرایط برقرار نباشه، ممکنه کل سرویس شما بر باد بره و برای همین من برای خودم اصل «اتوبوس جهانگردی» را گذاشتم و سعی می کنم بهش پایبند باشم. یعنی یه اتفاق شاید سالی یه بار بیفته و احتمال داره همین الان باشه. (اشاره به اتوبوس جهانگردی تو کارتن «مورچه و مورچه خوار»)

یعنی شما یک سال قطعی اینترنت نداشتید، دقیقا یک دقیقه بعد از تغییر IP سرور اینترنت قطع می شه. اینجاست که شما اگه به این اصل «آگاه نباشی» به جای تماس به دیتاسنتر، یکی دوساعت را صرف بررسی مجدد تنظیمات IP سرور می کنی. چون می گی من اینو تغییر دادم اینترنت قطع شد. در صورتی که فقط یه همزمانی اتفاق افتاده ، لامصب سالی یه دفعه هم این همزمانی اتفاق می افته.

چند روز پیش ما حمله ای را روی سرور تجربه کردیم، و به دلیل فراموشی همین اصل عیب یابی ما به بیراهه می رفت (البته یکی از دلایل بود). نمودار سرور وقتی افتاده بود که دقیقا من تغییری را در سرور اعلام کرده بودم. به فاصله پنج دقیقه. خوب من و بقیه در درجه اول به این اعتقاد داشتیم که به احتمال زیاد مربوط به اون تغییرات هست. درصورتی که فقط یک همزمانی مسخره و دقیق بود.

محدود کردن دسترسی کاربران معمولی

وقتی یک تیم روی یک پروژه کار می‌کنه و هر کدام از بخش ها دارای وظایف کلیدی هستند و نیاز به دسترسی داده‌ها دارند. خیلی از این نیاز‌ها با ایجاد یک mirror از داده ها در داخل شرکت برآورده می‌شوند. مشکل از زمانی آغاز می‌شود که هر کدام از بخش‌ها نیاز پیدا میکنه که به داده‌های آنلاین دسترسی داشته باشه.

مطمئنا دادن کاربر root کار احمقانه ای است. نه به دلیل عدم اعتماد و دلنگرانی از سوء استفاده از دسترسی ها (که البته بهتره به این هم فکر کنیم)، بلکه به دلیل اینکه همه کاربر‌ها حساسیت مدیر سیستم را در کار با دستورات و خط فرمان ندارند و یه سهل انگاری کوچک ممکنه یک فاجعه به وجود بیاره. بهتره همیشه دسترسی ها در حداقل نیاز خودش حفظ بشه، تا نگرانی از یکپارچگی داده ها و سلامت آنها کمتر بشه.

اولین قدم این هست که به ازای هر نفر یک کاربر بر روی سرور ساخته بشه تا مشخص بشه، چه کسی به سرور متصل شده است.

ادامه خواندن محدود کردن دسترسی کاربران معمولی

نام گذاری جدید اینترفیس های شبکه

از نسخه Ubunut 16.04 ، Debian Stretch و CentOS 7 نامگذاری اینترفیس های شبکه تغییر کرده است. در ساختار قبلی پورت های شبکه با نام های ethX نام گذاری می شدند و برای کارتهای شبکه بی سیم از اسامی wlanX استفاده می کردند که به جای X شماره اینترفیس قرار می‌گیرد.

مشکل: مشکل شکل قدیمی نامگذاری آن است که نام اینترفیس قابل پیش بینی نیست و سیستم عامل به ترتیبی که کارت به سیستم متصل شده است عددی به آن نسبت می‌دهد. مثلا اگر شما یک کارت در سیستم خود دارید. آن را eth0  می‌نامد. در صورتی که کارت شبکه جدیدی به سیستم اضافه کنید، بدون توجه به اینکه این کارت جدید در اسلات قبل یا بعد از اینترفیس قبلی خورده است، یا اینکه کارت شبکه قبلی onboard یا غیر onboard بوده است، شماره دو را نسبت می‌دهد. این موضوع در حالی است که این با اضافه کردن کانفیگ برای دادن نام ثابت به یک Mac Address فراهم شده است و گرنه در حالت پیشفرض امکان تغییر نام ها نیز وجود دارد و این  موضوع مشکلات زیادی را فراهم می کند. زیرا که نام اینترفیس هیچ ارتباط مستقیمی به نوع کارت و نوع اتصال آن ندارد.

ادامه خواندن نام گذاری جدید اینترفیس های شبکه

گم شدن گوشی (پیدا شد)

دو روز پیش گوشیم را گم کردم. یا بهتر بگم تو تاکسی جا گذاشتم و یکی قبل از اینکه من تاکسی را پیدا کنم گوشی را به عنوان غنیمت برده بود. خوب بر خود دیدم که به روش وسواس گونه آقا استالمن یه چک لیست در دو بخش پیش از دزدیدن و قبل از دزدیدن برای این موضوع تهیه کنم.

قبل از دزدیدن

یه کارایی را بهتره دایم انجام بدید. انجام منظم پشتیبان گیری از داده ها باعث آرامش خاطر و بی اهمیت شدن موضوع گم شدن می شه. چون برای کسانی مثل من که گوشی مهمترین ارزشش داده های ارتباطی توشه، واقعا گم شدن خود گوشی نیست که آزار دهنده است – چون واقعا جدای از دزدیدن و گم شدن هر لحظه ممکنه بلایی سرش بیاد مثلا بسوزه یا آب بریزه روش – دادهای روی گوشی هست که داره آزات می ده. خوب پس قبل از ، از دست دادن داده ها کارهای زیر مرتب انجام بدید

ادامه خواندن گم شدن گوشی (پیدا شد)

نصب پلاگین jenkins داخل docker

دنبالش بودم گفتم خیلی این روزا بهش نیاز دارند. برای نصب پلاگین داخل Dockerfile نمی خواد و نمی شه از روشهایی که تو اینترنت در جستجو های اولیه می یاد استفاده کرد. ولی خوب فکرشو کردن، باید از اسکریپت install-plugins.sh استفاده کنید . محتوای Dockerfile من این شکلیه:

FROM jenkins/jenkins:lts

RUN /usr/local/bin/install-plugins.sh checkstyle cloverphp dry htmlpublisher jdepend plot pmd violations xunit git greenballs

شروع کار با stretch

خوب دبیان جدید اومد من هم نصبش کردم. بد ندیدم نصبش رو لپ تاپم را مستند کنم هم برای خودم هم برای آنان که می اندیشند. 🙂

نصب دبیان ۹ – Stretch

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

ادامه خواندن شروع کار با stretch

مشکل نصب پلاگین برای Vagrant

در دبیان و اوبونتو زمانی که بسته Vagrant را نصب می کنید همه وابستگی های لازم برای اجرای بخشهای مختلف این نرم افزار نصب نمی شود. علاوه بر آن یک باگ شناخته شده وجود دارد که هنوز در مخازن اصلاح نشده است. محیط تست من ubuntu 16.04 است. یکی از مشکلات برای من زمان نصب پلاگین vagrant-share پیش اومد. زمانی که می خواستم دستور زیر را اجرا کنم با خطا مواجه می شدم:

vagrant plugin install vagrant-share

ادامه خواندن مشکل نصب پلاگین برای Vagrant