بنویس

محتوا تولید کنید.و با بنویس به اشتراک بگذارید.

بنویس

محتوا تولید کنید.و با بنویس به اشتراک بگذارید.

چند ابزار مفید برای توسعه دهندگان وب در محیط کامند لاین

رضا باقرزاده

به عنوان یک توسعه دهنده وب، زمانیکه مشکلی به وجود می‌آید، زندگی سخت می‌گردد. مشکل می تواند در هرجایی به وجود بیاید. آیا مشکل از درخواستی است که میفرستید؟ آیا مشکل از پاسخ سمت سرور است؟ آیا مشکل از بسته نرم افزاری دیگری است که استفاده می کنید و شاید هم API خارجی دچار مشکل شده است. اگر یک توسعه دهنده حرفه ای باشید یا مدیر سرور، برایتان زیاد پیش می آید که مجبورید از Command Line برای حل مشکل تان استفاده کنید.


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


Curl

اگر با کامند های انتقالی در شبکه مانند Wget آشنایی داشته باشید، Curl هم در همین گروه قرار می گیرد. این دسته از دستورات محتوای صفحات وب را برای شما بازآوری می کنند و آن را نمایش می دهند. تفاوت اصلی بین Curl و Wget این است که Wget محتوای صفحه را در فایل ذخیره می کند اما Curl آن را در همان محیط کامند لاین نمایش می دهد و همین امر استفاده از Curl را برای شما بسیار ساده خواهد کرد. برای مثال با زدن دستور زیر می توانید آی پی ای که هم اکنون در محیط اینترنت با آن در حال فعالیت هستید را از طریق ifconfig.me مشاهده کنید:


  $ curl ifconfig.me
  93.96.101.90

دستور curl -i هدر های صفحه را نیز نمایش داده و دستور curl -I فقط هدر های صفحه را فراخوانی می کند. این دو دستور بسیار در فهمیدن این که دقیقا HTTP چه هدری را برای شما می فرستد مفیدند.


  $ curl -I news.ycombinator.com
  HTTP/1.1 200 OK
  Content-Type: text/html; charset=utf-8
  Cache-Control: private
  Connection: close

آپشن L- یک ابزار بسیار مفید است که باعث می شود curl ریدایرکت ها را نیز دنبال کند. Curl همچنین از HTTP Basic authentication و کوکی ها و بسیاری از موارد دیگر پشتیبانی می کند.


Ngrep

برای آنالیز پکت ها در شبکه می توان از نرم افزار بسیار قدرتمند Wireshark، همراه هزاران امکان و تنظیم استفاده کرد. همچنین برای محیط کامند لاین هم می توانید از نسخه دیگر این نرم افزار تحت عنوان TShark یاد کرد. اما برای کار های ساده استفاده از این نرم افزار به نظر پیچیده می آید. اگر دنبال یک ابزار قدرتمند و ساده برای آنالیز بسته های شبکه هستید می توانید از دستور Ngrep استفاده کنید.


برای استفاده از این ابزار در کنترل بسته های وب همواره از آپشن W byline- جهت حفظ لاین بریک ها و q- برای حذف برخی از اطلاعات غیر مفید خروجی استفاده کنید. برای مثال دستور زیر جهت بررسی تمام پکت هایی که از نوع Get و یا Post هستن، استفاده می شود.


  ngrep -q -W byline "^(GET|POST) .*"

همچنین شما می توانید فیلتر های بیشتری جهت محدود کردن بسته ها به یک آی پی و یا آدرس خاص را اضافه کنید. برای مثال با دستور زیر تمام بسته های ارسالی و یا دریافتی از گوگل که شامل "search" هستند را نمایش می دهد.


  ngrep -q -W byline "search" host www.google.com and port 80

Netcat

netcat و یا همان nc ابزاری مانند چاقو های ارتش سوییس در شبکه محسوب می شود. بسیار ساده اما بسیار قدرتمند است. ابزاریست که به شما این امکان را می دهد تا کانکشن های دلخواه خود را در شبکه ایجاد کنید. برای مثال در دستور زیر به عنوان یک پورت اسکنر از آن استفاده شده است:


  $ nc -z example.com 20-100
  Connection to example.com 22 port [tcp/ssh] succeeded!
  Connection to example.com 80 port [tcp/http] succeeded!

علاوه بر یک ایجاد کننده کانکشن های دلخواه می توان از ترکیب nc و tar برای کپی کردن فایل ها ما بین دو سرور استفاده کرد. برای این کار کافیست از دستور زیر سمت سرور:


  $ nc -l 9090 | tar -xzf -

و از دستور زیر در سمت کلاینت استفاده کنید:


  $ tar -czf dir/ | nc server 9090

شما همچنین می توانید از nc برای در دسترس قرار دادن یک اپلیکیشن در شبکه استفاده کنید برای مثال ما در پایین امکان برقراری دسترسی Shell از طریق پورت 8080 را به می دهیم:


  $ mkfifo backpipe
  $ nc -l 8080  0 backpipe

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


  $ nc example.com 8080
  uname -a
  Linux li228-162 2.6.39.1-linode34 ##1 SMP Tue Jun 21 10:29:24 EDT 2011 i686 GNU/Linux

ممکن است مثال های قبل به نظر غیر ضروری بیایند و شما ترجیح دهید برای دسترسی به سرور مستقیما از ssh استفاده کنید اما این مثال ها بیانگر قدرت بسیار زیاد Netcat هنگامی که با اپلیکیشن های دیگر ترکیب می شود هستند.


Sshuttle

Sshuttle به شما این امکان را می دهد تا از طریق یک تونل به هر سروری که دسترسی SSH به آن دارید وصل شوید و ترافیک خود را از طریق این سرور منتقل کنید. با این کار شما در مقابل ابزار هایی مانند Firesheep و یا dsniff هنگامی که در یک محیط عمومی از اینترنت استفاده می کنید در امان خواهید بود. این ابزار می تواند امنیت شما را تا حد زیادی ارتقا دهد. با استفاده از این ابزار تمام درخواست های شما از جمله درخواست DNS می تواند از طریق سروری دیگر پاسخ داده شود.


  $ sshuttle -r  --dns 0/0

با استفاده از دستور --daemon شما می توانید sshuttle را به صورت پس زمینه اجرا کرده و با ترکیب با آپشن های دیگر با استفاده از آدرسی ساده به راحتی و سریع آن را فعال و غیر فعال کنید.


  alias tunnel='sshuttle --D --pidfile=/tmp/sshuttle.pid -r  --dns 0/0'
  alias stoptunnel='[[ -f /tmp/sshuttle.pid ]] && kill `cat /tmp/sshuttle.pid`'

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


برای محدود کردن این سرویس به آی پی ای خاص و یا هاستی خاص به جای ارسال تمام ترافیک می توانید از دستور زیر استفاده کنید. اما اگر از آدرس هاست می خواهید استفاده کنید به دلیل اینکه Sshuttle تنها از آی پی پشتیبانی می کند می توانید از dig ابتدا استفاده کرده تا به آی پی مورد نظر دست پیدا کنید:


  $ sshuttle -r  `dig +short `

Siege

siege یک ابزار بنچ مارک HTTP است که با افزودن آپشن -g که بسیار شبیه -iL برای curl می باشد هدر های صفحه را نیز نمایش می دهد. برای مثال اجرای این دستور را برای گوگل در پایین مشاهده می کنید(برخی هدر ها برای راحتی در خواندن حذف شده اند):


  $$ siege -g www.google.com
  GET / HTTP/1.1
  Host: www.google.com
  User-Agent: JoeDog/1.00 [en] (X11; I; Siege 2.70)
  Connection: close

  HTTP/1.1 302 Found
  Location: http://www.google.co.uk/
  Content-Type: text/html; charset=UTF-8
  Server: gws
  Content-Length: 221
  Connection: close

  GET / HTTP/1.1
  Host: www.google.co.uk
  User-Agent: JoeDog/1.00 [en] (X11; I; Siege 2.70)
  Connection: close

  HTTP/1.1 200 OK
  Content-Type: text/html; charset=ISO-8859-1
  X-XSS-Protection: 1; mode=block
  Connection: close

یک قابلیت بسیار ستودنی Siege استفاده برای تست لود سرور است. مانند دستور ab (که یک دستور تست لود سرور با استفاده از آپاچی می باشد) شما می توانید چند درخواست هم زمان را به سمت سرور فرستاده و نتیجه زیبایی از آن دریافت کنید. در پایین ما برای مثال ۲۰ کانکشن هم زمان برای ۳۰ ثانیه به گوگل فرستادیم و نتیجه به صورت زیر بوه است:


  $ siege -c20 www.google.co.uk -b -t30s
  ...
  Lifting the server siege...      done.
  Transactions:                    1400 hits
  Availability:                 100.00 %
  Elapsed time:                  29.22 secs
  Data transferred:              13.32 MB
  Response time:                  0.41 secs
  Transaction rate:              47.91 trans/sec
  Throughput:                     0.46 MB/sec
  Concurrency:                   19.53
  Successful transactions:        1400
  Failed transactions:               0
  Longest transaction:            4.08
  Shortest transaction:           0.08

در مطالب آینده ابزارهای بیشتر و پیشرفته تر را نیز معرفی خواهیم کرد.

نظرات 0 + ارسال نظر
امکان ثبت نظر جدید برای این مطلب وجود ندارد.