چک وصل بودن اینترنت در فواصل منظم

اگه لازم داشته باشیم هر مثلا ۱۵ دقیقه چک بشه آیا به اینترنت وصل هستیم یا خیر، و اگر وصل نبود یک هشدار صوتی به ما بده، میتونیم از اسکریپت زیر استفاده کنیم و اون رو توی cron قرار بدیم تا هر ۱۵ دقیقه اجرا بشه.

اسکریپت زیر برای ما چک میکنه آیا میتونیم به google.com پینگ کنیم یا نه. اگر بله، یک دستوری اجرا بشه (یک صدای کلیک) و اگر نه، یک صدای دیگه پخش بشه و نوتیفیکیشن هم بده. دستورات رو میتونید بنا به نیاز خودتون تغییر بدید.

#!/bin/bash
export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
if [[ $(ping -q -c 3 google.com) == @(*3 received*) ]]; then
paplay /usr/share/sounds/freedesktop/stereo/device-added.oga
else
paplay /usr/share/sounds/freedesktop/stereo/dialog-warning.oga  && /usr/bin/notify-send -i "network" "Network is down" "There is no active internet connection now"
fi

توجه کنید که بجای /run/user/1000/bus باید userID خودتون رو قرار بدید. با دستور id میتونید UID خودتون رو ببینید.

برای قرار دادن این اسکریپت در کرون (تا هر ۱۵ دقیقه اجرا بشه)، اول مجوز اجرایی به اسکریپت میدیم (با توجه به محل اسکریپت):

chmod +x ~/pingstat

و بعد برای ویرایش job های کرون، با دستور crontab -e و اضافه کردن زمان و محل اسکریپت، اون رو به امان خدا می سپاریم:

*/15 * * * * ~/pingstat

یک اسکریپت کامل تر در اینجا وجود داره که وقتی ping میکنه اگر در دسترس نباشه یک ایمیل میفرسته! البته در ادامه مطلب این اسکریپت رو هم آوردم

ادامه مطلب

تبدیل charachter encoding فایل های متنی

مشکل از اینجا شروع میشه که اکثر فایل های زیرنویس فارسی دارای encoding از نوع windows-1256 هستند. این باعث میشه که در نرم افزار های پخش فیلم مثل totem یا vlc زیرنویس فارسی درست نشون داده نشه. (البته این مال قدیم بود و الان دیگه همچین مشکلی نداریم. صرفا برای آرشیو این مطلب و استفاده های مشابه نوشتم)

با این روش من encoding فایل زیرنویس رو به utf8 تغییر میدم  و در تنظیمات vlc هم utf8 رو انتخاب میکنم. totem هم خودش متوجه خواهد شد. و زیرنویس فارسی درست نشون داده خواهد شد. برای این تغییر:

iconv -f windows-1256 -t utf8 /file-1.srt > /file-2.srt

طبیعتا آدرس فایل ها رو باید جایگزین کنید.

یک راه ساده تر برای این تبدیل، استفاده از یک اسکریپت ساده است. من این اسکریپت رو طبق نیاز خودم تغییر دادم. میتونید اون رو در یک فایل مثلا با نام srtconv ذخیره کنید و اون رو در فولدر usr/bin/  کپی کنید. و از این به بعد برای تبدیل یک زیرنویس به utf8 در خط فرمان تایپ کنید srtconv و بعد از اینتر کردن، آدرس فایلتون رو بهش میدید. اونوقت فایل شما از windows-1256 به utf8 تبدیل میشه و کنار فایل اصلی قرار میگیره.

برای دیدن اسکریپت به ادامه مطلب برید!

ادامه مطلب

رایت فایل iso توزیع لینوکس روی USB Disk

این روزها کمتر کسی هست که روی DVD بخواد ایمیج توزیعی که دانلود کرده رایت کنه. برای رایت ایمیج iso روی یک مموری (USB Disk) راه های متفاوتی وجود داره.

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

sudo dd bs=4M if=/path/to/manjaro.iso of=/dev/sd[drive letter] status=progress oflag=sync

در دستور بالا، به جای [drive letter]  باید حرف مربوط به درایو usb رو قرار بدید. مثلا sdc یا sdb. توجه کنید که sdc1 یا sdc2 نیست. با این کار کل فلش شما تبدیل به فایل iso میشه که دانلود کردید.

راه راحت تر و گرافیکی اش در این روزها، استفاده از imagewriter هست. کافیه اون رو از مخازن توزیع فعلی نصبش کنید.

اگر در ویندوز هستید و میخواید یک فایل iso روی USB Disk بریزید، برنامه Rufus جیز خوب و قابل اعتمادی است.

تنظیم زمان زیرنویس در VLC و Celluloid

ممکنه زیرنویس های فیلم ها با صدای گوینده ها هم زمان نباشند. این مشکل رو به سادگی در VLC با به کار بردن کلید های زیر حل میکنیم:

Ctrl + h برای تاخیر انداختن در زیرنویس (یعنی وقتی زیرنویس زودتر میاد)

Ctrl + g برای عقب کشیدن زیرنویس (یعنی وقتی که اول گوینده حرفشو میگه بعد زیرنویس میاد)

میتونید این کلید ها رو در قسمت prefrences در حالت advance در قسمت interface ببینید و تغییر بدید.

در پخش کننده Celluloid (رابط گرافیکی gtk برای mpv) این کار با کلید های Z و Shift + Z انجام میشه.

نمایش صحیح عبارات فارسی در ترمینال

خیلی قبل پیش برای نمایش صحیح عبارات فارسی در ترمینال باید ژانگولر بازی زیادی در میاوردیم. اما امروزه در سال ۲۰۲۳ میلادی، کافیه بسته fribidi رو نصب کنید و هیچ کار اضافه تری لازم نیست!

البته حداقل توی gnome-terminal که مشکلی نیست. حالا سایر ترمینالها رو نمیدونم...

گنوم ترمینال باز شود و دستوری را اجرا کند

ممکنه لازم داشته باشیم برای اجرای یک دستوری، gnome-terminal رو باز کنیم و دستور داخلش اجرا بشه. مثلا یک شورتکات ساختیم که برای اجرا شدن نیاز به باز شدن ترمینال داره. یا میخوایم در run (Alt+F2) دستوری رو اجرا کنیم که ترمینال باز بشه باهاش.

برای اینکار در گنوم، در سال ۲۰۲۳! باید از این راه استفاده کنیم:

gnome-terminal -- /bin/sh -c 'echo test; exec bash'

اگر بخواید ترمینال بعد از اجرای دستور بسته بشه، عبارت exec bash رو بردارید




حاصل سر و کله زدن های من با لینوکس