شجاعتشون باعث شده ما امروز احساس امنیت و آرامش بکنیم…
پلاسکو در آتش سوخت…
19
01
شجاعتشون باعث شده ما امروز احساس امنیت و آرامش بکنیم…
19
01
15
07
گاهی نیاز داریم به صورت مستقیم به پورتی از سرور لینوکسی بر روی سیستم لوکال دسترسی داشته باشیم. مثل وقتی که بخوایم به دیتابیس روی سرور دسترسی داشته باشیم. برای اینکار میتونیم به راحتی با استفاده از SSH پورت مورد نظرمون رو روی کامپیوتر لوکال فوروارد کنیم. برای اینکار از سوئیچ L بصورت زیر استفاده میکنیم.
ssh -L port:address:port host
که تو دستور بالا port اول پورت مورد نظر ما روی سیستم لوکال بوده و address:port آدرسی بر روی سرور هستش که میخواین بهش از طریق SSH دسترسی داشته باشیم.
25
12
آپدیت: از دو روش زیر روش اول از grep ورژن 2.21 توصیه نمیشه و اگه از اون استفاده کنید با پیغام هشدار زیر روبرو میشوید.
grep: warning: GREP_OPTIONS is deprecated; please use an alias or script
یکی از سوئیچ هایی که موقع کار با grep خیلی به دردمون میخوره سوئیچ color هستش که مقدار جستجو رو بصورت رنگی نشون میده. ممکنه تو بعضی دیستروها این سوئیچ بطور پیش فرض ست نشده باشه و مجبور باشیم هر دفعه این سوئیچ رو تایپ کنیم.
برای اینکه این گزینه رو بطور پیش فرض داشته باشیم، میتونیم از یکی از دو روش زیر استفاده کنیم:
برای اینکار کافیه که متغیر GREP_OPTIONS رو ست کنیم و برای اینکه تو هر بار اجرای bash این متغیر ها ست بشن میتونیم اون رو تو فایل .bashrc خودمون ست کنیم.
export GREP_OPTIONS=" --color"
راه دوم اینه که از alias ها استفاده کنیم. برای این موضوع میتونیم یک alias برای grep بصورت زیر تعریف کنیم و اون رو به فایل .bashrc خودمون اضافه کنیم:
alias grep='grep --color'
15
11
اول از هر چیز موضع خودم در رابطه با اتفاقات اخیر پاریس:
من فکر میکنم یه حمله تروریستی تو پاریس انجام شده و همونطور که اگه این اتفاق برای ما میوفتاد این موج همدردی هیچ دردی از ما درمون نمیکرد، الان هم زیاد با این جریان موافق نیستم و برای همین هم خودم رو زیاد قاطی این جریانات نمیکنم. پس موضع من: نه مخالف و نه موافق …
خوب حالا بریم سر اصل داستان:
یه سری هستن که تا یه اتفاقی تو اروپا ( مثل اتفاقات شارلی ابدو و یا اتفاقات اخیر پاریس) میوفته و همدردی جامعه رو میبینن شروع میکنن که آآآی مگه مردم بقیه دنیا آدم نیستن !!! چرا هفته پیش که تو فلان کشور تو خاورمیانه شونصد نفر کشته شدن صداتون در نیومد؟ و به مردم هزار تا انگ غرب زدگی میچسبونن.
به نظر من این مقایسه از اساس اشتباه و نمیشه خاورمیانه ای رو که از سر تا پاش ناامنی میباره رو با اروپایی مقایسه کرد که این جور اتفاقات توش یه اتفاق غیر معمول به حساب میاد. توی خاورمیانه اگه هفته ای باشه که توش عملیات تروریستی (استشهادی) رخ نده، باید تعجب کرد و این اتفاقات به یه امر روزمره تبدیل شده. اما تو اروپایی که به کوچکترین حقوق شهروندان توش اهمیت داده میشه و از قبل براش فکر شده نمیشه گفت که عملیات تروریستی یه موضوع عادی هستش و عکس العمل بینالمللی به اون باید مشابه موارد مشابه تو خاورمیانه باشه.
14
11
درصورتی که قصد داشته باشیم document هایی از یک collection خاص را براساس شرطی بر روی یکی از فیلد های از نوع آرایه ای آنها پیدا کنیم میتونیم از عبارت $elemMatch بصورت زیر استفاده کنیم:
مثال اول:
فرض میکنیم collection ما شامل موارد زیر باشد:
{ _id: 1, results: [ 82, 85, 88 ] }
{ _id: 2, results: [ 75, 88, 89 ] }
در این صورت برای پیدا کردن document هایی که قیلد result آنها دارای عدد ۸۸ است بصورت زیر عمل میکنیم:
db.collection.find({
results: { $elemMatch: 88 }
})
همچنین میتوان از شرط های پیچیده تری استفاده نمود:
db.collection.find({
results: {
$elemMatch: { $gte: 80, $lt: 85 }
}
})
مثال دوم (آیتم های آرایه از نوع آبجکت):
فرض میکنیم collection ما شامل موارد زیر باشد:
{ _id: 1, results: [ { product: "abc", score: 10 }, { product: "xyz", score: 5 } ] }
{ _id: 2, results: [ { product: "abc", score: 8 }, { product: "xyz", score: 7 } ] }
{ _id: 3, results: [ { product: "abc", score: 7 }, { product: "xyz", score: 8 } ] }
برای یافتن مواردی که در آنها product ی با مقدار score بزرگتر مساوی 8 باشد بصورت زیر عمل میکنیم:
db.collection.find({
results: {
$elemMatch: {
product: "xyz",
score: { $gte: 8 }
}
}
})
09
10
ممکنه لازم باشه بطور روزمره به یه سرور ssh بزنیم. برای اینکار با دستور زیر میتونیم کلید عمومی خودمون رو به سرور اضافه کنیم تا موقع لاگین دیگه نیازی به رمز عبور نباشه:
$ ssh-copy-id [email protected]
یا اگه مسیر فایل کلید عمومی رو بخوایم تغییر بدیم بصورت زیر عمل میکنیم:
$ ssh-copy-id -i ~/.ssh/id_dsa.pub [email protected]
یا برای ssh به پورتی غیر از پورت پیش فرض:
$ ssh-copy-id -i /path/key/file.pub "[email protected] -p PORT_NUMBER"
بروز رسانی: برای ماشین هایی که دستور ssh-copy-id رو پشتیبانی نمیکنند میتوان بصورت زیر عمل نمود:
cat ~/.ssh/id_rsa.pub | ssh user@machine "mkdir ~/.ssh; cat >> ~/.ssh/authorized_keys"
15
01
اگه تا بحال راجع به بانک های اطلاعاتی
NoSQL
شنیده باشید، حتما اسمMongoDB
رو هم شنیدید. یک بانک اطلاعاتیDocument Based
که اطلاعات رو بصورت داکیومنت هایی به فرمتJSON
ذخیره میکنه.
الان یه مدته که من هم سر و کارم به این بانک اطلاعاتی افتاده و دارم ازش استفاده میکنم. از این به بعد نکاتی رو که در رابطه با
MongoDB
بهشون بر میخورم رو هم تو این وبلاگ داکیومنت میکنم تا شاید بعدا به درد خودم یا کس دیگه ای بخوره.
خوب یکی از مواردی که تو کار با MongoDB
ممکنه بهش بر بخوریم تغییر نام یک دیتابیس هستش. از اونجایی که خود MongoDB
(حداقل تا الان) دستوری رو برای این منظور نداره و باید برای اینکار بصورت دیگه ای عمل کنیم. که در ادامه به چند روش انجام این کار اشاره میکنم:
یکی از روش هایی که برای تغییرنام میتونیم استفاده کنیم کپی بانک و پاک کردن نسخه قدیمی اون از روی سرور هستش، برای اینکار بصورت زیر عمل میکنیم:
> db.copyDatabase('old_database', 'new_database')
> use old_database
> db.dropDatabase()
MongoDB
برای Backup گیری از بانک ها و همچنین برگردوندن Backup ها دو تا دستور mongodump
و mongorestore
رو ارائه داده که میشه از اونها برای backup گیری از دیتابیس و برگردوندن backup با اسم جدید از اونها استفاده کرد. برای این منظور بصورت زیر عمل میکنیم:
mongodump --db old_database
mongorestore --db new_database /path/to/old_db_backup
پس از برگردوندن backup به سرور وصل میشیم و نسخه قدیمی رو با دستور dropDatabase
پاک میکنیم:
mongo
> use old_database
> db.dropDatabase()
13
12
set autoindent
14
11
چند وقت پیش که داشتم tor رو روی اوبونتو نصب میکردم، سراغ پروکسی گیج کننده (obfsproxy) هم رفتم. اما چون به یه خطایی خوردم بیخیالش شدم و با خود tor بدون استفاده از obfsproxy کار میکردم. تا اینکه امروز تنبلی رو کنار گذاشتم و با یه سرچ کوچیک توی اینترنت راه حل رفع مشکل نصب obfsproxy رو توی اوبونتو پیدا کردم.
برای اینکار، بعد از نصب tor باید بسته obfsproxy رو هم نصب کنیم:
sudo apt-get install tor
sudo apt-get install obfsproxy
حالا که بسته های مورد نیاز خودمون رو نصب کردیم باید تنظیمات tor رو انجام بدیم تا از obfsproxy استفاده کنه. برای اینکار فایل torrc خودمون رو ویرایش میکنیم:
sudo vi /etc/tor/torrc
تنظیمات زیر رو به انتهای این فایل اضافه میکنیم:
UseBridges 1
ClientTransportPlugin obfs2 exec /usr/bin/obfsproxy --managed
ClientTransportPlugin obfs3 exec /usr/bin/obfsproxy --managed
در اینجا یه نکته ای وجود داره و اونم اینه که ممکنه که obfsproxy تو مسیر دیگه ای نصب شده باشه ( توی راهنماهایی که توی اینترنت وجود داشت معمولا در مسیر /usr/local/bin ) که باید با توجه به مسیر نصب روی سیستم خودتون مسیر های دو خط آخر رو اصلاح کنید.
حالا بعد از انجام تنظیمات بالا نیاز داریم تا یکسری bridge برای استفاده tor داشته باشیم که برای بدست آوردن جدید ترین bridge ها یک ایمیل به آدرس [email protected] میفرستیم و توی متن ایمیل مون از یکی از دستورات زیر با توجه به نوع bridgeی که لازم داریم، استفاده میکنیم:
جهت دریافت bridge های عادی:
get bridges
جهت دریافت bridge های بر پایه obfs2:
get transport obfs2
جهت دریافت bridge های بر پایه obfs3:
get transport obfs3
بعد از اینکه ایمیل درخواست خودمون رو ارسال کردیم، به فاصله چند لحظه یک ایمیل دریافت میکنیم که حاوی ۳ تا آدرس bridge از نوع مورد نظر ماست، این آدرس ها رو هم بصورت زیر در ادامه فایل تنظیمات اضافه میکنیم:
bridge [transport type] IP_ADDRESS:PORT [finger print]
بطور مثال برای bridge های عادی:
bridge 111.111.111.111:1111 21b87f4b3e43cce851344f0e85a24694b27d114b
و برای bridge های از نوع obfs2:
bridge obfs2 111.111.111.111:1111 21b87f4b3e43cce851344f0e85a24694b27d114b
حالا که تنظیمات خودمون رو انجام دادیم، فایل تنظیمات رو ذخیره میکنیم و سرویس tor رو دوباره راه اندازی میکنیم:
sudo service tor restart
بعد از راه اندازی سرویس tor میتونیم با مشاهده انتهای لاگ فایل tor از وصل شدن اون مطلع بشیم:
tailf /var/log/tor/log
Nov 14 20:21:24.000 [notice] We now have enough directory information to build circuits.
Nov 14 20:21:24.000 [notice] Bootstrapped 80%: Connecting to the Tor network.
Nov 14 20:21:24.000 [notice] Bootstrapped 90%: Establishing a Tor circuit.
Nov 14 20:21:31.000 [notice] Tor has successfully opened a circuit. Looks like client functionality is working.
Nov 14 20:21:31.000 [notice] Bootstrapped 100%: Done.
خوب تا اینجا روش معمول راه اندازی bridge ها بر روی tor بود و اگه قرار نباشه از obfsproxy استفاده کنیم تا اینجا کارمون راه افتاده و میتونیم از tor استفاده کنیم.
اما اگه بخوایم از bridge های بر پایه obfsproxy استفاده کنیم موقع اجرای tor با خطای زیر روبرو میشیم:
Nov 14 19:56:34.000 [warn] We were supposed to connect to bridge '54.164.6.73:40872' using pluggable transport 'obfs3', but we can't find a pluggable transport proxy supporting 'obfs3'. This can happen if you haven't provided a ClientTransportPlugin line, or if your pluggable transport proxy stopped running.
این خطا به دلیل مشکلی پیش میاد که توی اسکریپت apparmor برای tor وجود داره و برای رفع اون باید فایل اسکریپت apparmor برای tor رو ویرایش کنیم:
sudo vi /etc/apparmor.d/system_tor
توی این فایل باید مسیر obfsproxy رو بصورت زیر اضافه کنیم:
/usr/bin/obfsproxy Ux,
که فایل اسکریپت به صورت زیر تغییر میکنه:
# vim:syntax=apparmor
#include <tunables/global>
profile system_tor {
#include <abstractions/tor>
owner /var/lib/tor/** rwk,
owner /var/log/tor/* w,
/usr/bin/obfsproxy Ux, ## this is the FIX
/{,var/}run/tor/control w,
/{,var/}run/tor/tor.pid w,
/{,var/}run/tor/control.authcookie w,
/{,var/}run/tor/control.authcookie.tmp rw,
# Site-specific additions and overrides. See local/README for details.
#include <local/system_tor>
}
حالا با راه اندازی مجدد tor خطای قبلی برطرف میشه و به شبکه tor وصل میشیم.