منبع اصلی نوشتار زیر در این لینک قرار دارد

بررسی اینکه آیا کاربری در سیستم وجود دارد یا نه

شاید شل اسکریپتی لازم داشته باشد که از ورودی نام کاربری را گرفته و اطلاعاتی را نشان دهد. پس باید بررسی کنیم که آیا کاربر وجود دارد یا نه؟ اگر کاربر در سیستم بود یک سری کد و اگر نبود باید از برنامه خارج شویم.فایل های etc/passwd/ و فایل etc/group/ در سیستم عامل های یونیکسی (لینوکس، سولاریس، BSD) که به ترتیب اطلاعات کاربران و گروه ها را نگه می دارند. برای اینکار می توانیم از ابزار هایی مانند id,egrep استفاده کنیم. از دستور های زیر می توانید در خود خط فرمان استفاده کنید.

استفاده دز خط فرمان

از دستور egrep به صورت زیر استفاده کنید. این دستور یک نام کاربری بجای USERNAME می گیرد و آنرا در فایل etc/passwd/ جستجو می کند. در صورتی که نامی معادل با USERNAME وارد شد، آن خط را از فایل برمی گرداند.

egrep -i “^USERNAME” /etc/passwd

egrep -i “^a.nami” /etc/passwd

a.nami:x:8595:609::/home/a.nami:/bin/bash

یا اینکه از دستور id به صورت زیر استفاده کنید.

id USERNAME

id a.nami

uid=8595(a.nami) gid=609(shell) groups=609(shell)

اما در صورتی که کاربر وجود نداشته باشد خطای زیر نشان داده می شود.

id a.namiii

id: a.namiii: No such user

استفاده در شل اسکریپت

در شکل زیر با دستور read یک ورودی (نام کاربری) را گرفته و در متغیر USERNAME ذخیره می کند. در if اول بررسی می کند که فقط یک نام کاربری وارد شده باشد (نه کمتر نه بیشتر) و در if دومی چک می کند که آیا کاربر وجود دارد یا نه؟

استفاده از دستور id می کند. مانند بالا یک ورودی گرفته و کاربرد if اول و دوم مانند کد بالا است. تنها بجای دستور egrep از دستور id استفاده کرده است.

تفاوت دیگر اسکریپت دوم با اسکریپت اول در خط زیر است. در این خط اگر کاربری وجود نداشته باشد، خطای id: a.namiii: No such user را نشان نمی دهد و بجای آن …..not exist را نشان می دهد.

همچنین می توانید از این دستور ها برای وجود یا عدم وجود گروه ها استفاده کنید.

egrep -i “^GROUPNAME” /etc/group

id -g GROUPNAME

در دومین دستور اگر گروه GROUPNAME وجود داشت شماره یا (GID) گروه را بر می گرداند در غیر اینصورت خطایی مانند عدم وجود کاربر نشان می دهد.

لینک های مرتبط :



برچسب ها : , , , , , , , , , ,