این تمرینها کاربردهای عملی ساختارهایی است که در این فصل صحبت کردیم. موقع نوشتن اسکریپتها، میتوانید آنها را در یک دایرکتوری آزمایشی که اطلاعات خیلی زیاد ندارد امتحان کنید. به جای آنکه همه چیز را یکباره بنویسید، هر مرحله را بنویسید، بعد آن بخش از کد را امتحان کنید.
اسکریپتی بنویسید که از کاربر سن او را بپرسد. اگر ۱۶ سال یا بیشتر دارد، پیغامی چاپ کنید که بگوید این کاربر مجاز به نوشیدن الکل هست( البته توجه میفرمایید که این یک ترجمه است- مترجم). اگر سن کاربر زیر ۱۶ سال است، پیغامی چاپ کنید که به کاربر بگوید که اوقبل از رسیدن به سنی که به طور قانونی مجاز به نوشیدن بشود، چند سال باید منتظر بماند.
به عنوان فوقالعاده، محاسبه کنیدکه یک کاربر بالای ۱۸ سال به طور آماری چقدر آبجو نوشیده( به ازای ۱۰۰ لیتر در سال ) واین اطلاعات را برای کاربر چاپ کنید.
اسکریپتی بنویسید که یک فایل را به عنوان شناسه دریافت کند. یک ساختار here document که یک سری انتخاب برای فشردهسازی فایل به کاربر ارائه کند، به کار ببرید. انتخابهای ممکن میتوانند gzip, bzip2, compress, zip باشند.
اسکریپتی به نام
homebackup
بنویسید که tar را خودکار کند به طوریکه شخص اجرا کننده اسکریپت همیشه گزینههای مطلوب (cvp
) و دایرکتوری مقصد پشتیبان (/var/backups
) را برای پشتیبانگیری از دایرکتوری خانگی خود به کار ببرد. ویٰگیهای زیر را پیادهسازی کنید:بررسی تعداد شناسهها. اسکریپت باید بدون شناسه اجرا شود. در صورت وجود هر شناسهای، پس از پیغام نحوهٔ اجرا خارج شود.
تعیین کند که آیا دایرکتوری
backups
فضای آزاد کافی برای نگهداری پشتیبان دارد.از کاربر بپرسد که یک پشتیبان کامل یا افزایشی خواسته است. اگر کاربر هنوز فایل پشتیبان کامل ندارد، پیغامی چاپ کند که پشتیبان کامل تهیه خواهد شد. در حالت پشتیبان افزایشی، در صورتی که پشتیبان کامل قدیمیتر از یک هفته نیست، فقط افزایشی تهیه کند.
با استفاده از یک ابزار فشردهسازی پشتیبان را فشرده کند. به کاربر اطلاع دهد که این کار در حال انجام است، زیرا ممکن است مدتی به طول انجامد، در مدتی که اگر هیچ خروجی روی صفحه نمایش ظاهر نشود ممکن است به تدریج نگرانی کاربر شروع شود.
پیغامی چاپ کنید که اندازه فایل فشرده را به اطلاع کاربر برساند.
info tar یا مقدمهای بر لینوکس، فصل 9: «آماده سازی دادهها» را برای اطلاعات پشتیبان گیری ببینید.
اسکریپتی به نام
simple-useradd.sh
بنویسید که یک کاربر محلی را به سیستم اضافه کند. این اسکریپت باید:فقط یک شناسه دریافت کند، یا در غیر آنصورت بعد از چاپ یک پیغام نحوهٔ کاربرد خارج شود.
فایل
/etc/passwd
را بررسی کرده و اولین شماره شناسایی کاربری آزاد را انتخاب کند. پیغامی محتوی این ID چاپ کند.با کنترل فایل
/etc/group
یک گروه اختصاصی برای این کاربر ایجاد کند. پیغامی شامل شماره شناسایی این گروه چاپ نماید.جمعآوری اطلاعات از کاربر عملکننده: یک توضیح به کاربر برای انتخاب پوسته از یک لیست(قابلیت پذیرش را بررسی کرده در صورت نفی با چاپ پیغام خارج شود) ، تاریخ انقضاء برای این حساب کاربری، گروههای اضافی که کاربر جدید میتواند عضو بشود.
بااطلاعات به دست آمده، یک سطر به فایل
/etc/passwd
و /etc/group
و /etc/shadow
اضافه کنید، دایرکتوری خانگی کاربر را ایجاد کنید( با مجوزهای صحیح! ) و به گروههای مطلوب فرعی اضافه کنید.رشتهای را به عنوان کلمه عبور این کاربر تعیین کنید.
اسکریپت بخشی به نام«بررسی وجود یک فایل» را دوبارهنویسی کنید، به طوری که به جای خواندن ورودی از اولین شناسه، ورودی را از کاربر دریافت کند.