ساعی سعادت
ساعی سعادت
خواندن ۲ دقیقه·۲ سال پیش

تنظیم shecan در ترمینال برای مک و لینوکس

اگر نمیدونی شکن چیه، واقعا بهت حسودیم میشه چون یا با سایت‌های تحریم شده سر و کار نداری و راحتی، یا قراره با یه چیزی آشنا بشی تو این پست که زندگیتو شاید یذره آسون‌تر می‌کنه :))

شکن یک سرویس DNS برای دور زدن تحریم‌ها (نه فیلتر‌ها!!! تحریم‌ها) بر ضد کاربرای ایرانیه. این که چطوری کار می‌کنه رو می‌تونید از توی سایت خودشون یاد بگیرید.

https://shecan.ir/

اما توی این پست برای کاربرای مک و لینوکس، یه اسکریپت دارم که از طریق ترمینال بتونید راحت شکن رو فعال و غیر فعال کنید چون مخصوصا اگر با داکر زیاد سر و کار دارید، مدام توی تنظیمات اضافه و حذف کردن DNS فعالیت جذابی نیست.

کلیت ماجرا اینه که یه فایل shecan درست می‌کنیم و توش یه فانکشن می‌نویسیم و می‌شناسونیمش به ترمینالمون و مثل فانکشن‌های دیگه‌ی ترمینال صداش می‌کنیم.

اول از همه، فایل رو بسازیم.

من خودم تمام اسکریپت‌های این مدلیم رو توی فولدری به اسم .myscripts داخل home directory نگه می‌دارم ولی شما هر جایی دوست داشتید میتونید نگهش دارید. آدرس جایی که ذخیره‌اش کردید رو LOCATION/~ فرض می‌کنیم.

برای مک:

لطف بفرمایید فایل shecan یا shecan.sh رو توی همون‌جایی که دوست دارید که اسمشو LOCATION گذاشتیم با محتویات زیر بسازید.

#!/bin/zsh
function shecan {
if [[ &quot$1&quot = &quotremove&quot ]]; then
networksetup -setdnsservers Wi-Fi &quotempty&quot
else
networksetup -setdnsservers Wi-Fi 178.22.122.100 185.51.200.2
fi
}


و برای لینوکس (ubuntu و دوستان):

اول پکیج resolvconf رو از طریق کامند زیر نصب کنید:

sudo apt update sudo apt install resolvconf

بعد هم این فایل shecan یا shecan.sh رو توی LOCATION ایجاد کنید:

#!/bin/sh LOC=&quot/etc/resolvconf/resolv.conf.d/head&quot​
function shecan {
if [[ $1 = &quotremove&quot ]]; then
echo | sudo tee $LOC
else
echo &quotnameserver 178.22.122.100&quot | sudo tee $LOC echo &quotnameserver 185.51.200.2&quot | sudo tee -a $LOC
fi
sudo resolvconf -u
}




mac

حالا تنها کاری که مونده اینه که به ترمینالمون بگیم هر وقت استارت زدی، این فایل رو source کن. برای این کار بستگی داره که ترمینالتون از bash استفاده می‌کنه یا zsh، برای این که بفهمید این کامند رو اجرا کنید:

echo $SHELL

حالا اگر zsh بود، با یه تکست ادیتور (مثلا nano) فایل zshrc. رو باز کنید:

nano ~/.zshrc

و اگر bash بود (شاید لازم باشه بسازیدش! نترسید اگر وجود نداشت):

nano ~/.bashrc


حالا یه جاییش (مثلا آخرش) این خط رو بنویسید:

for f in ~/LOCATION/*; do source $f; done

* یاداوری: LOCATION پوشه‌ایه که توش این فایل shecan رو گذاشتید. با این اسکریپت از این به بعد هر فایل این مدلی‌ای بذارید تو LOCATION مثل shecan به ترمینال شناسونده میشه و میتونید صداش کنید.

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

تبریک میگم! شما از این به بعد می‌تونید توی ترمینالتون با این کامند:

shecan

شکن رو روشن کنید و با:

shecan remove

شکن رو خاموش کنید. به همین سادگی به همین خوشمزگی :)

shecanterminalmaclinuxbash
شاید از این پست‌ها خوشتان بیاید