Gnu Tips

وبلاگ شخصی وحید معانی

تنظیم nameserver در سیستم‌های بر پایه Debian

postسلام

برای تنظیم nameserver در سیستم‌های گنو/لینوکس تقریباً اوّلین روشی که همه استفاده می‌کنند فایل resolve.conf موجود در مسیر ‪/etc/‬ هست که هر خط اون نشانگر یک nameserver با حالت کلی زیر هست:

امّا از جمله معایبی که این روش داره این هست که ممکنه بعد از هر بار ریبوت توسط ابراز‌های مورد استفاده بپره و مجبور بشیم دوباره اون رو تنظیم کنیم. پس می‌ریم دنبال راه‌حل دیگه!

اگر شما هم از اون دسته آدمایی هستین که تلاش می‌کنید با استفاده از دکمه‌ی tab دستور رو کامل کنید حتماً هنگام تایپ کردن کلمه‌ی resolve.conf متوجه شدین که در همان مسیر ‪/etc/‬ یک دایرکتوری به اسم resolving.conf.d وجود داره. درون این مسیر یه فایل به اسم base وجود داره که کارش ذخیره‌ی nameserverهاست. و به عبارت دیگه با هر بار بالا آمدن سیستم مقادیر موجود در آن درون فایل resolv.conf قرار می‌گیره. شکل کلی خطوط این فایل هم مانند فایل resolv.conf هست.

و در نهایت راه‌حل سوّم برای زمانی مناسب هست که اینترفیس شبکه قرار هست آدرس IP استاتیک داشته باشه و این کار رو از طریق فایل ‪/etc/network/interfaces‬ انجام می‌دیم. در این حالت هم کافی هست که آدرس IP سرور DNS رو با فرمت:

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

 

URI, URL and URN

سلام

توی بعضی از داکیومنت‌های فنی به کلمات URL, URI و URN بر می‌خوریم که علاقه‌بر اینکه شکل نوشتاری مشابهی دارن مفهوم خیلی شبیه به همی هم دارن. از این به بعد اگر به این کلمات بر خوردین و نیاز داشتین که سریع به مفهوم کلی اونها پی ببرید می‌تونید این شماتیک رو در نظر بگیرید:

 

ریست کردن رمز عبور ispconfig

postسلام

اگر خدای نکرده کلمه عبور ispconfig رو فراموش کردید لازم نیست زیاد نگران باشید، چون اگر هنوز به سرور دسترسی دارید و کلمه عبور mysql اون رو می‌دونید می‌تونید کلمه عبور ispconfig رو بدون اینکه لازم باشه کلمه عبور قبلی رو بدونید ریست کنید.

این کار از طریق آپدیت کردن فیلد کلمه‌ی عبور کاربر مورد نظر (admin) انجام می‌شه. پس کافیه از طریق phpmyadmin در دیتابیس dbispconfig و جدول sys_user فیلد passwort رو زمانی که فیلد username برابر مقدار admin هست رو با md5 کلمه‌ی عبور جدید جایگزین کنید.

اگر phpmyadmin نصب ندارید کافی هست با استفاده از دستور زیر وارد mysql شوید:

سپس با استفاده از دستور زیر، دیتابیس مورد استفاده رو به dbispconfig تغییر می‌دیم:

و در نهایت کافی هست دستور زیر رو اجرا کنیم تا کلمه‌ی عبور کاربر admin از هر چیزی که بود به NEW-PASSWORD تغییر پیدا کنه (هشدار: قبل از اجرای دستور مقدار NEW-PASSWORD رو به کلمه‌ی عبور دلخواه تغییر دهید!)

و نهایت با استفاده از دستور ‪quit;‬ از mysql خارج شوید.

حال می‌توانید با استفاده از کلمه‌ی عبور جدید کاربر admin وارد وب‌اینترفیس ispconfig شوید. :)

 

 

انتقال خروجی یک دستور خط به خط به دستور دیگه

postخب عنوان پست توضیح جامعی بود برای خودش و به نظر میاد فقط کافیه من اینجا جواب رو بگم ولی چون قرار هست اطلاعات تکمیلی در مورد راه‌حل رو خودتون پیدا کنید پس من مشکل و مسئله رو یه خورده کامل‌تر توضیح می‌دم تا متوجه منظورم بشید :)

فرض کنید دستوری داریم که لازم هست با استفاده از حلقه‌ای مانند حقله‌ی while خروجی اون رو خط به خط پردازش کنیم. خب اوّلین راه‌حلی که به ذهن می‌رسه استفاده از پایپ (pipe (|)) هست. به شکل زیر:

خب این درست هست و کار می‌کنه ولی بعضی مواقع تعداد دستوراتی که قبل از حلقه‌ی while باید انجام بگیرند به نحو و حدی می‌رسه که bash نمی‌تونه تشخیص بده خط کجا تموم شده و همه‌ی خروجی رو به عنوان یک خط در نظر می‌گیره و به حلقه ارسال می‌کنه که خب باعث می‌شه ما خروجی دلخواهمون از حلقه رو نگیریم.

برای رفع این مشکل از راه‌حل دیگه ‌ای استفاده می‌کنیم که به این روش Process Substitution گفته می‌شه. اینکه دقیقاً چی هست و به چه کار‌هایی می‌اید الان از حوصله‌ی من و این پست خارج هست ولی شکل کلیش به این صورت هست:

حلقه‌ی while با آرگومان‌های read -r line شروع می‌شه و داخلش دستورات مورد نظر رو داره ولی در قسمت intended command دستوری که خروجی اون باید وارد حلقه بشه رو وارد می‌کنیم. برای مثال همون دستور ls -1! در این حالت این دستور اجرا شده و خطوط خروجی اون یکی یکی وارد حلقه می‌شن تا دستورات داخلی حلقه بر روی اونها اعمال بشه. نکته‌ای که در این شکل خیلی مهم هست اینه که بین کاراکتر‌های > یک فاصله‌ای وجود داشته باشه یعنی در حقیقت همین فاصله هست که باعث می‌شه شکل کلی دستور به process substitution تبدیل بشه!

برای اطلاعات بیشتر در مورد Process Substitution می‌تونید به لینک‌های زیر مراجعه کنید:

  • http://mywiki.wooledge.org/ProcessSubstitution
  • http://unix.stackexchange.com/questions/52026/bash-how-to-read-one-line-at-a-time-from-output-of-a-command#52027
  • http://mywiki.wooledge.org/BashFAQ/106