حل مشکل USB Stickهایی که به صورت Unsafe از سیستم جدا شدهاند
شاید برای شما هم پیش آمده باشد که USB Stick (فلش درایو) ای از دوستی گرفتهاید ولی پس از نصب روی سیستمتان متوجه شدهاید که قابل نوشتن نیست. نمونهای از اخطار مربوطه به صورت زیر است:
[bash]
Error opening file ‹/media/Shahin_LG/1.jpg›: Permission denied
[/bash]
معمولا این اشکال در ازای جدا کردنش از سیستم در حین کار اتفاق میافتد. حال ممکن است که روی یک سیستم واقعی بوده باشد، یا یک فکش پلیر! به شخصه در اولین بر خورد با چنین مشکلی، آسیب دیدن فایل سیستم را دلیل دانستم، ولی پس از چک کردن فایل سیستم متوجه شدم که چنین نیست. راه حل این بار سوار کردن (Mount) دستی فلش درایو به صورت زیر است:
[bash]
sudo mount -t ntfs-3g /dev/sdb1 /media/LG -o force
[/bash]
توجه داشته باشید که برای جواب گرفتن از این دستور باید بستههای ntfs-config و ntfs-3g را نصب داشته باشید و همچنین پوشهای برای سوار کردن فلش درایو (در اینجا /media/LG) ایجاد کرده باشید.
چچچ (۹): چطور به صورت فلهای لینکهای یوتیوب را از وبسایتی استخراج و دانلود کنیم!
ببخشید که تیتری از این سادهتر و گویاتر پیدا نکردم. ولی خوب اصل موضوع خیلی قشنگ چالش برانگیز است. مساله این است:
سایتی به این شکل داریم (لینک را باز کنید) که شامل یک لیست از پیوند به صفحات دیگرش است که در آنها علاوه بر قابلیت نمایش ویدیو، لینک یوتیوب همان ویدیو وجود دارد. حجم پیوندها برابر ۲۰۰ عدد است
کار عادیاش به این صورت است که بنشینیم و با حوصله تک تک لینکها را کپی پیست کرده و جایی ذخیره کنیم. ولی با وجود دویست صفحه و لینک، کمی (خیلی) خسته کننده (خریت به معنای واقعی کلمه، البته ببخشید ;-)) است. خوب جواب مساله را خودم هم نمیدانستم، ولی مطمئن بودم، با ابزارهای گنو/لینوکسی، نتیجهی خیلی خوبی خواهم گرفت. اولین کاری که به فکرم رسید، دانلود صفحهی اصلی و صفحههای پیوند شده به هر لینک بود که با wget خیلی خوب بلد بودم! به این صورت:
[bash]
wget -rl1 http://thenewboston.org/list.php?cat=11
[/bash]
خوب نتیجه مجموعهای از فایلها بود که با اسمهایی شبیه به آدرسشان در پوشهی جاری ذخیره شده بود. با استفاده از آرگومانهای rl1 به wget فهماندم که صفحهی حاضر را به عمق یک صفحه رو به جلو دانلود کند. حالا مسالهی سخت اینجا بود که چطور به grep بفهمانیم که چه چیزی را (در اینجا لینک ویدیو در یوتیوب) برایمان جدا کند. دستوری که با دفعات زیادی آزمون و خطا نتیجه داد، به این صورت بود: (برای دیدن دستور کاملتر به آخر مطلب رجوع کنید، ویرایش۱)
[bash]
grep -ohE «http://www.youtube.com/watch?v=%5B%5B:alnum:%5D-%5D{11}» * > list
[/bash]
کار این دستور این است که یک لیست از الگوی داده شده را ایجاد و در فایل list ذخیره کند. آرگومانهای ohE به طور خلاصه به grep میفهمانند که فقط عبارت داخل پرانتز را در فایلها پیدا کند و در خروجی نمایش دهد. قسمت جالب قضیه که بیشتر از همه وقتم را گرفت بخش زیر بود:
[bash]
[[:alnum:]-]{11}
[/bash]
که به grep میگفت ترکیبی از حروف و ارقام را به تعداد یازده عدد قبول کند. در مورد این عبارتها در آیندهای نزدیک پستی در شاهینیسم خواهیم داشت.
برای دانلود لینکها هم میتوانید همان فایل خروجی را به صورت زیر به youtube-dl بدهید:
[bash]
youtube-dl -ta list
[/bash]
البته سرعت دانلود youtube-dl واقعا پایین است. روی سروری با دانلود عادی ده مگ، سرعت به زور میتوانست به چهل کیلوبایت برسد. پیشنهاد من به شما، نصب یک نسخه از RapidLeech است. سرعت و کاربرد بسیار بهتری دارد 😉
ویرایش ۱: بعد از مدتی استفاده از این دستور، فهمیدم که از اونجایی که توی آدرسهای Youtube امکان وجود آندرلاین هم هست، تعدادی از لینکها رو با دستور بالا از دست میدیم. به همین دلیل دنبال یه راه دیگه گشتم، و سرانجام به دستور زیر رسیدم که نتیجهی خیلی قابل قبولتری میده:
[bash]
grep -ohE «http://www.youtube.com/watch?v=%5B%5B:alnum:%5D(-|_)]{11}» * | uniq > list2
[/bash]
همچنین توی این دستور با استفاده از uniq از تکرار لینکها در صفحه خروجی جلوگیری میشه 😉
چچچ (۸): رنگی کردن خروجی فرمان ls در BASH
خیلی وقت بود که دنبال این بودم که بفهمم چطوری خروجی ls رو توی bash رنگی کنم و از این حالت مردهی سادش در بیارم. خوبی این رنگبندی موقعی معلوم میشه که توی دایرکتوریهای تو در تو گم میشی. خلاصه یه پست از پیروزان عزیز امروز بانی خیر شد و من رو مجبور کرد که به سمت حل این مشکل برم و چیزایی یاد بگیرم. البته ناگفته نمونه که پیروزان هم چیز جالبی معرفی کرد که در ادامهی مطلب توضیح استفاده ازش رو میدم.
برای رنگ کردن نتیجهی خروجی خود دستور ls یه آرگومانی به این صورت داره --color که خروجی رو رنگی میکنه. یعنی هر بار که میخواین خروجی رنگی بگیرین باید یه همچین دستوری رو بزنین:
[bash]
ls –color
[/bash]
که خوب این یه کم ممکنه خسته کننده باشه. برای رفع مشکلش هم که طبیعیه میتونین از alias استفاده کنین، و برای ماندگار شدنش یه همچین خطی رو به فایل .bashrc تون اضافه کنین:
[bash]
alias ls=»ls –color=always»
[/bash]
این دقیقا کاریه که خیلی از توزیعها به صورت پیشفرض انجامش میدن. ولی خوب همونطور که گفتم دوست عزیزم پیروزان یه چیز جالبتر هم معرفی کرده بود. ماجرا از این قراره که این آرگومان --color که بحثش رو کردیم، بر میگرده از یه فایلی به اسم DIR_COLORS توی شاخهی etc الگوی رنگبندیش رو بر میداره (که البته با توجه به توزیعهای مختلف ممکنه جای این فایل فرق کنه). حالا یه آدم باحال نشسته و رنگبندی متنوعی برای سیصد نوع فایل مختلف آماده کرده و توی این کانال git منتشر کرده. برای استفاده از این فایل اول اون رو دانلود کنین و برای مثال توی شاخهی خانگی لینوکستون ذخیره کنین. حالا با اضافه کردن خط زیر توی فایل .bashrc از رنگبندی جدید لذت ببرین:
[bash]
eval $(dircolors -b LS_COLORS)
[/bash]
نمونهای از خروجی این فایل به صورت زیره:
چچچ (۷): بستن یک حساب کاربری در گنو/لینوکس
دستور passwd برای تغییر رمز عبور حساب یک کاربر یا گروه مورد استفاده قرار میگیرد. یک کاربر عادی تنها قادر است که رمز عبور اکانت خودش را عوض کند، اما کاربر اصلی (ریشه) میتواند رمز عبور هر حسابی را عوض کند. شما با استفاده از این دستور میتوانید یک حساب را قفل کرده و یا قفلش را باز کنید.
قفل یک حساب گنو/لینوکس:
نحو:
[bash]
passwd -l (username)
[/bash]
حساب را قفل میکند. در واقع آپشن* -l با تغییر رمز عبور یک حساب به یک مقدار رمز شده، حساب را از دسترسی خارج میکند.
مثال:
قفل کردن حسابی به اسم shahin. با کاربر ریشه وارد میشویم و دستور زیر را وارد میکنیم:
[bash]
# passwd -l shahin
[/bash]
قفلگشایی یک حساب گنو/لینوکس:
نحو:
[bash]
passwd -u (username)
[/bash]
حساب را قفلگشایی میکند. این آپشن -u رمز حساب رو به مقدار قبلیاش باز میگرداند و آن را دوباره فعال میکند.
مثال:
برای بازگشایی یک حساب کاربری به اسم shahin، اول با کاربر ریشه وارد میشویم، و دستور زیر را وارد میکنیم:
[bash]
# passwd -u shahin
[/bash]
*: هر چه سعی کردم کلمه جایگزینی برای آپشن (انتخاب) به ذهنم نرسید که جملهبندی را خراب نکند. به بزرگی خودتان ببخشید!
چچچ (۶): چگونه در خط فرمان گنو/لینوکس بزرگنمایی صفحه نمایشام را پیدا کنم؟
این سوال به میزان وضوع یک تصویر بر روی صفحه نمایش اشاره میکند. بزرگنمایی صفحه (Screen resolution) به تعداد نقطهها یا پیکسلهای موجود در سراسر صفحهٔ نمایشتان اشاره میکند. برای مثال، وقتی میگویید برزگنمایی ۶۴۰x۴۸۰ پس منظورتان این است که ششصد و چهل نقطه در هر یک از چهارصد و هشتاد خط وجود دارد، یعنی، ۳۰۷ کیلو پیکسل.
برای پیدا کردن این مشخصه میتوانید از یکی از دو روش زیر کمک بگیرید:
۱) استفاده از دستور xdpyinfo:
[bash]
xdpyinfo | grep ‹dimensions:›
[/bash]
که نتیجهای به شکل زیر را باز میگرداند:
[bash]
dimensions: 1024×768 pixels (347×260 millimeters)
[/bash]
۲) استفاده از دستور xrandr:
[bash]
xrandr | grep ‘*’
[/bash]
که نتیجهای به صورت زیر را باز میگرداند:
[bash]
xrandr: Failed to get size of gamma for output default
1024×768 50.0* 51.0
[/bash]
که البته منظور خط بالایی احتمالا این است که به خاطر قدیمی بودن مانیتور من، خروجی گاما (!) را اندازه گیری نمیکند (یعنی به چه درد میخوره؟).
البته بدیهی است که در محیطهای دسکتاپ مختلف، با رجوع به بخش تنظیمات میتوان به این اطلاعات دست یافت، ولی این روشها طبیعتا سرراستتر است 😉
چچچ (۵): تغییر رمز عبور root در MySQL
من چگونه باید رمز عبور کاربر ریشه MySQL را در گنو/لینوکس، FreeBSD، OpenBSD و سیستمعاملهای شبه یونیکس روی ارتباط ssh / telnet عوض کنم؟
ایجاد رمز عبور MySQL یک کار ضروری است. به صورت پیشفرض کاربر ریشه، کاربر مدیر MySQL است. لطفا توجه داشته باشید که کاربر ریشه در لینوکس/یونیکس در سیستمعامل شما با کاربر ریشهٔ MySQL متفاوت است و هیچ ربطی به هم ندارند. بعضی مواقع ممکن است شما برای حفظ مسائل امنیتی، کاربر root را حذف کنید و به جای آن کاربر admin به عنوان کاربر اصلی در mysql معرفی کنید.
دستور mysqladmin برای تغییر کلمه عبور ریشه
اگر شما هرگز برای کاربر ریشهٔ کارگزار MySQLتان یک رمز عبور تعیین نکردهاید، کارگزار دیگر نیازی به کلمهٔ عبور برای متصل شدن به عنوان کاربر ریشه نخواهد داشت. برای ایجاد رمز عبور ریشه برای اولین بار، از دستور mysqlamin در خط فرمان به صورت زیر عمل کنید:
[bash]
$ mysqlamin -u root pasword NEWPASSWORD
[/bash]
به هر حال، اگر میخواهید رمز عبور کاربر ریشه را تعویض (یا به روز رسانی) کنید، پس باید دستور فوق را به شکل زیر تغییر دهید:
[bash]
$ mysqladmin -u root -p» oldpassword» password newpass
[/bash]
برای مثال، اگر رمز عبور قدیمی abc باشد، شما میتوانید روز جدید را به صورت ۱۲۳۴۵۶ با دستور زیر ایجاد کنید:
[bash]
$ mysqladmin -u root -p» abc» password «۱۲۳۴۵۶»
[/bash]
تغییر رمز عبور MySQL برای دیگر کاربران
برای تغییر رمز عبور کاربر عادی (فرض میکنیم که میخواهیم رمز عبور کاربر vivek را تغییر دهیم) باید از دستور زیر استفاده کنید:
[bash]
$ mysqladmin -u vivek -p oldpassword password newpass
[/bash]
تغییر رمز عبور کاربر ریشه MySQL با استفاده از دستور sql در محیط mysql
این روشی دیگر است. MySQL نامهای کاربری و رمز عبورها را در یک جدول در پایگاه دادهٔ MySQL ذخیره میکند. با استفاده از روش زیر میتوانید مستقیما رمز عبور کاربر Vivek را تغییر دهید:
۱) به کارگزار mysql وارد شوید و دستور زیر را در خط فرمان وارد کنید:
[bash]
$ mysql -u root -p
[/bash]
۲) از پایگاه داده mysql استفاده کنید (فرمان را در اعلان mysql> وارد کنید):
[bash]
mysql> use mysql;
[/bash]
۳) رمز عبور کاربر vivek را با وارد کردن دستور زیر تغییر دهید:
[bash]
mysql> update user set password=PASSWORD(“NEWPASSWORD”) where User=’vivek’;
[/bash]
۴) سرانجام، ابزارها را دوباره بارگزاری کنید:
[bash]
mysql> flush privileges;
mysql> quit
[/bash]
از این روش میتوانید با استفاده از APIها mysql در اسکریپت نویسیها به زبانهای PHP، پایتون و یا پرل استفاده کنید.