Md Daily – Telegram
Md Daily
725 subscribers
239 photos
15 videos
21 files
283 links
راجب مقالات و مستندات فنی یا غیر فنی که میخونم و علایقم اینجا مینویسم :)


گروه کانال: https://news.1rj.ru/str/MdDailyGap

کورس ها: https://news.1rj.ru/str/MdDaily/395

وبلاگ: https://mddaily.ir
Download Telegram
#ام_دی_کورس

فایل های تمرینی مباحث دوره ی Bash 👇👇👇
1
#ام_دی_کورس

حالا می تونیم از تمام مهارت های bash که توی این سری آموزش bash یاد گرفتیم، برای ساختن برنامه های bash خیلی مفیدی استفاده کنیم که بهمون کمک کنه وظایف تکراری و کسل کننده رو خودکار کنیم.

تو این آموزش، ما چند برنامه اتوماسیون مینویسیم که می تونید بعداً برای خودکار کردن هر کاری که می خواهید، اون ها رو گسترش بدید. این برنامه ها از آرایه ها، if-else، حلقه ها و سایر مفاهیمی که توی این سری یاد گرفتیم استفاده می کنن.

پس با من همراه باشید :)

ادامه در پست بعدی...

🆔 @MdDaily
2
#ام_دی_کورس

اتوماسیون مدیریت کاربر با اسکریپت bash

به عنوان یک مدیر سیستم، ممکن است ایجاد یک کاربر در چندین سرور به صورت روزانه برای شما اتفاق بیفتد. این یک کار خسته کنندسش، بنابراین بیایید یک اسکریپت bash ایجاد کنیم که آن را به صورت خودکار انجام دهد.

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

به عنوان مثال، من در اینجا فایلی به نام servers.txt ایجاد کردم که شامل پنج سرور مختلف است:

linux@ubuntu:~$ cat servers.txt
server1
server2
server3
server4
server5

💡 توجه داشته باشید که من از نام‌های میزبان سرور استفاده کردم چونکه آدرس‌های IP را در فایل /etc/hosts ام قرار دادم. شما همچنین میتونید در اینجا از SSH config file استفاده کنید.

بریم سراغ اسکریپت adduser.sh:

#!/bin/bash

servers=$(cat servers.txt)

echo -n "Enter the username: "
read name
echo -n "Enter the user id: "
read uid

for i in $servers; do
echo $i
ssh $i "sudo useradd -m -u $uid ansible"
if [ $? -eq 0 ]; then
echo "User $name added on $i"
else
echo "Error on $i"
fi
done

اسکریپت adduser.sh ابتدا از شما می‌خواهد نام کاربری و شناسه کاربری کاربری رو که می‌خواهید اضافه کنید، وارد کنید. سپس، روی تمام سرورهای موجود در فایل servers.txt از طریق SSH لوپ میزنه و کاربر مورد نظر رو اضافه میکنه.

ادامه در پست بعدی...

🆔 @MdDaily
2
Md Daily
#ام_دی_کورس اتوماسیون مدیریت کاربر با اسکریپت bash به عنوان یک مدیر سیستم، ممکن است ایجاد یک کاربر در چندین سرور به صورت روزانه برای شما اتفاق بیفتد. این یک کار خسته کنندسش، بنابراین بیایید یک اسکریپت bash ایجاد کنیم که آن را به صورت خودکار انجام دهد. ابتدا…
#ام_دی_کورس

بریم اسکریپتو اجرا کنیم و ببینیم چطور کار می کنه (تصویر پست)

اسکریپت با موفقیت اجرا میشه و کاربر ansible به همه پنج تا سرور اضافه میشه. چنتا نکته ی مهم:

👈 میتونید از empty ssh pass phrases استفاده یا ssh-agent رو اجرا کنید تا موقع اجرای اسکریپت مجبور نشید کلید (یا رمز عبور) وارد کنید.

👈 باید یک حساب کاربری معتبر داشته باشید که دسترسی super user (بدون نیاز به رمز عبور) در همه سرورها داشته باشه.

تصور کنید که باید یه کاربر رو به بیش از چندین سرور لینوکس مختلف اضافه کنید! اسکریپت adduser.sh قطعاً می تونه کلی وقتتون رو ذخیره کنه.

ادامه در پست بعدی...

🆔 @MdDaily
2
#ام_دی_کورس

خودکارسازی فرایند پشتیبان گیری با اسکریپت bash

گرفتن پشتیبان گیری کاری است که همه ما به صورت منظم انجام میدیم (اگه انجام نمیدید حتما انجام بدید 😄 )، پس چرا اون رو خودکار نکنیم؟ به اسکریپت backup.sh زیر نگاهی بیندازید:

#!/bin/bash

backup_dirs=("/etc" "/home" "/boot")
dest_dir="/backup"
dest_server="server1"
backup_date=$(date +%b-%d-%y)

echo "Starting backup of: ${backup_dirs[@]}"

for i in "${backup_dirs[@]}"; do
sudo tar -Pczf /tmp/$i-$backup_date.tar.gz $i
if [ $? -eq 0 ]; then
echo "$i backup succeeded."
else
echo "$i backup failed."
fi
scp /tmp/$i-$backup_date.tar.gz $dest_server:$dest_dir
if [ $? -eq 0 ]; then
echo "$i transfer succeeded."
else
echo "$i transfer failed."
fi
done

sudo rm /tmp/*.gzecho "Backup is done."

ابتدا، یک آرایه به نام backup_dirs ایجاد می‌کنیم که تمام نام‌های دایرکتوری‌هایی رو که می‌خواهیم ازشوون پشتیبان‌گیری کنیم، ذخیره میکنه. بعدش، سه متغیر دیگر ایجاد می کنیم:

👈 متغیر dest_dir: برای مشخص کردن دایرکتوری مقصد پشتیبان.

👈 متغیر dest_server: برای مشخص کردن سرور مقصد پشتیبان.

👈 متغیر backup_time: برای مشخص کردن تاریخ پشتیبان گیری.

💡 اینجا توی اسکریپت بعد از گرفتن بک آپ رویه یک سرور بک آپ رو آپلود میکنه ولی شما میتونید با تغییر دادن کد بخشی که رو سرور آپلود میکنه به کدی که مثلا تو یک حافظه ی جانبی کپی میکنه برای خودتون شخصی سازیش کنید.

بعد، برای تمام دایرکتوری‌های موجود در آرایه backup_dirs، یک آرشیو tar فشرده شده gzip در /tmp ایجاد میکنه، بعدش از دستور scp برای ارسال/کپی کردن پشتیبان‌گیری به سرور مقصد استفاده میکنه. در نهایت، تمام آرشیوهای gzip را از /tmp حذف میکنه.

نمونه خروجی backup.sh :

linux@ubuntu:~$ ./backup.sh
Starting backup of: /etc /home /boot
/etc backup succeeded.
etc-Aug-30-20.tar.gz 100% 1288KB 460.1KB/s 00:02
/etc transfer succeeded.
/home backup succeeded.
home-Aug-30-20.tar.gz 100% 2543KB 547.0KB/s 00:04
/home transfer succeeded.
/boot backup succeeded.
boot-Aug-30-20.tar.gz 100% 105MB 520.2KB/s 03:26
/boot transfer succeeded.
Backup is done.

ممکن است بخواهید هر روز در نیمه شب بک بگیرید. در این صورت، میتونید از cron job استفاده کنید:

linux@ubuntu:~$ crontab -e
0 0 * * * /home/mdDaily/noscripts/backup.sh

ادامه در پست بعدی...

🆔 @MdDaily
2
#ام_دی_کورس

نظارت بر فضای دیسک موجود

فایل ها قرار است فضای خالی موجود را پر کنند، تنها کاری که میتونید انجام بدید اینکه که قبل از کرش سیستم خود سریع عمل کنید! میتونید از دستور df برای مشاهده فضای باقی مانده استفاده کنید:

linux@ubuntu:~$ df -h / /apps /database
Filesystem Size Used Avail Use% Mounted on
/dev/sda5 20G 7.9G 11G 44% /
/dev/mapper/vg1-applv 4.9G 2.4G 2.3G 52% /apps
/dev/mapper/vg1-dblv 4.9G 4.5G 180M 97% /database

سیستم فایل /database تقریبا پرشده چونکه در حال حاضر 97% از فضا اشغال شده. اگه از دستور awk برای نمایش تنها فیلد پنجم استفاده کنیم، میتونیم فقط میزان استفاده رو نمایش بدیم.

حال به اسکریپت disk_space.sh زیر نگاه کنید:

#!/bin/bash
filesystems=("/" "/apps" "/database")
for i in ${filesystems[@]}; do
usage=$(df -h $i | tail -n 1 | awk '{print $5}' | cut -d % -f1)
if [ $usage -ge 90 ]; then
alert="Running out of space on $i, Usage is: $usage%"
echo "Sending out a disk space alert email."
echo $alert | mail -s "$i is $usage% full" your_email
fi
done

ابتدا، یک آرایه بنام filesystems ایجاد میکنیم که تمام فایل های سیستم رو که قرار نظارت کنه نگه می داره. سپس، برای هر سیستم فایل، درصد استفاده را دریافت کرده و بررسی میشه که آیا بزرگتر یا مساوی 90 است یا خیر. اگر استفاده بیش از 90% باشد، یک ایمیل هشدار ارسال میکنه (با استفاده از کامند mail) که نشان می دهد فضای سیستم فایل در حال اتمامه.

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

ادامه در پست بعدی...

🆔 @MdDaily
1
Md Daily
#ام_دی_کورس نظارت بر فضای دیسک موجود فایل ها قرار است فضای خالی موجود را پر کنند، تنها کاری که میتونید انجام بدید اینکه که قبل از کرش سیستم خود سریع عمل کنید! میتونید از دستور df برای مشاهده فضای باقی مانده استفاده کنید: linux@ubuntu:~$ df -h / /apps /database…
#ام_دی_کورس

اسکریپت رو اجرا کردم:

linux@ubuntu:~$ ./disk_space.sh
Sending out a disk space alert email.

و همینطور که توی تصویر پست میبیند ایمیل رو فرستاده.

ممکنه بخواهید اسکریپت disk_space.sh رو هر شش ساعت اجرا کنید. در این صورت باید از cron job استفاده کنید:

linux@ubuntu:~$ crontab -e
0 */6 * * * /home/user/noscripts/disk_space.sh


🆔 @MdDaily
3
#ام_دی_کورس

خب دوره ی Bash تموم شد و توی این دوره مفاهیم مختلف به همراه مثال های کاربردی پوشش داده شدند.

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

منابعی که برای آماده سازی این دوره استفاده شدند:

👈 کتاب Bash Command Line Pro Tips

👈 کتاب Learn Bash Quickly

👈 وبسایت linuxhandbook.com

🆔 @MdDaily
2
اول از همه یه خوش آمد بگم به اعضای جدید خانواده ی MdDaily 🫶

خب قرار بود طبق نظر سنجی این هفته آموزش ساخت Cdn با گولنگ داشته باشیم :)

تا الان از اموزش های گفته شده تو نظر سنجی

- دوره ی داکر
- دوره ی بش

تو کانال گذاشته شدند ولی این هفته متاسفانه فرصت نکردم که دوره ی cdn با گولنگ رو بنویسم

اما! به پیشنهاد شما عزیزان تو کامنت ها درباره ی نحوه ی انتشار دوره ها قرار تغییراتی انجام بشه، که به زودی جزئیاتش رو منتشر میکنم
5
قرار یه پروژه ایو تحت عنوان رویای Md: آموزش آزاد و رایگان برای همه به صورت ازاد و با مشارکت شما عزیزان توی گیت هاب شروع کنیم. که تلاشی‌ باشه برای اینکه بتونیم منابع فارسی بیشتری در حوزه ی برنامه نویسی و تکنولوژی داشته باشیم و پلتفرمی صاحب مقالات نباشه

خب قرار چیکار کنیم؟

یک static site احتمالا با hugo روی گیت هاب بیاریم بالا که کرش کورس های آموزشی کانال از این به بعد از طریق سایت منتشر بشن که هم دسترسی بهشون راحت تر بشه و هم افراد بیشتری بتونن مشارکت کنند و مقالات خودشون رو منتشر کنند. میتونید پیشنهاد های خودتون رو توی گروه MdDailyGap مطرح کنید

چطوری میتونم مشارکت کنم؟

👈برای ساخت قالب سایت

👈مشارکت در نوشتن مقالات و آموزش ها

👈مشارکت در انتقال آموزش های کانال به وبسایت

👈و...

میتونید مشارکت کنید.

از کجا میتونم مشارکتم رو اعلام کنم؟

توی گروه کانال (MdDailyGap)
9🔥1
Md Daily
نام پیشنهادی برای وبسایت:
با تشکر از تمام عزیزانی که توی نظرسنجی شرکت کردند ❤️

اسم وبسایت مشخص شد و پروژه ی رویای Md: آموزش آزاد و رایگان برای همه جزئیات و مراحل کارش تا قبل از انتشار نهایی از طریق گروه کانال منتشر میشه

منتظر اتفاقات هیجان انگیزی باشید 🫶
🔥9👍1