omshell(1) General Commands Manual omshell(1)

omshell - پوسته خط فرمان OMAPI

omshell

پوسته فرمان OMAPI با نام omshell یک روش تعاملی برای اتصال، پرس‌وجو و احتمالاً تغییر وضعیت سرور ISC DHCP از طریق رابط مدیریت شیء (OMAPI) فراهم می‌کند. با استفاده از OMAPI و omshell، نیازی به متوقف کردن سرور، اعمال تغییرات و سپس راه‌اندازی مجدد سرور DHCP نیست، بلکه می‌توانید تغییرات را در حین اجرای سرور اعمال کنید. omshell روشی برای دسترسی به OMAPI فراهم می‌کند.

رابط OMAPI صرفاً یک مکانیزم ارتباطی است که به شما امکان دستکاری اشیاء را می‌دهد. برای استفاده عملی از omshell، شما باید بدانید چه اشیایی در دسترس هستند و چگونه از آن‌ها استفاده کنید. مستندات مربوط به اشیاء OMAPI را می‌توان در راهنمای سرور ارائه‌دهنده آن‌ها یافت — برای مثال در صفحه راهنمای dhcpd(8) و صفحه راهنمای dhclient(8).

این نرم‌افزار، نرم‌افزاری آزاد است. در زمان‌های گوناگون توسعه آن توسط سازمان‌های مختلفی از جمله ISC و Vixie Enterprises پشتیبانی مالی شده است. توسعه نسخه 3.0 تقریباً به‌طور کامل توسط Nominum, Inc تأمین مالی شده است.

در حال حاضر توسعه آن توسط ISC میزبانی می‌شود، اما آینده این پروژه به شما بستگی دارد. اگر قابلیت‌هایی مد نظرتان است، لطفاً پیاده‌سازی آن‌ها را در نظر بگیرید.

در سرتاسر این سند، ارجاعاتی به اشیاء محلی و راه دور وجود دارد. اشیاء محلی مواردی هستند که در omshell با دستور new ساخته می‌شوند. اشیاء راه دور مواردی روی سرور هستند: اجاره‌ها (leases)، میزبان‌ها (hosts) و گروه‌هایی که سرور DHCP از آن‌ها مطلع است. اشیاء محلی و راه دور به یکدیگر پیوند داده می‌شوند تا مشاهده و تغییر ویژگی‌های شیء امکان‌پذیر شود. همچنین می‌توان اشیاء راه دور جدیدی ایجاد کرد که با اشیاء محلی مطابقت داشته باشند.

دستور omshell از خط فرمان اجرا می‌شود. پس از اجرای omshell، دستورهای متعددی وجود دارد که می‌توان صادر کرد:

server address

که در آن address آدرس IP سرور DHCP مورد نظر برای اتصال است. در صورت عدم تعیین، سرور پیش‌فرض 127.0.0.1 (localhost) خواهد بود.

port number

که در آن number شماره پورتی است که OMAPI روی آن گوش می‌دهد. به صورت پیش‌فرض، این مقدار 7911 است.

key name secret

این دستور کلید TSIG مورد استفاده برای احراز هویت تراکنش‌های OMAPI را مشخص می‌کند. name نام کلید تعریف‌شده در dhcpd.conf با عبارت omapi-key است. secret کلید محرمانه‌ای است که توسط dnssec-keygen یا برنامه دیگری برای تولید کلید ساخته شده است. الگوریتم کلید به صورت پیش‌فرض HMAC-MD5 فرض می‌شود. اگر الگوریتم متفاوتی در فایل dhcpd.conf برای کلید مشخص شده باشد، باید از طریق عبارت key-algorithm تعیین شود.

key-algorithm algorithm

این دستور الگوریتم رمزنگاری کلید مورد استفاده هنگام احراز هویت تراکنش‌های OMAPI را مشخص می‌کند. مقادیر پشتیبانی‌شده برای algorithm عبارتند از:
HMAC-MD5
HMAC-SHA1
HMAC-SHA224
HMAC-SHA256
HMAC-SHA384
HMAC-SHA512
مقدار پیش‌فرض HMAC-MD5 است (مقدار به حروف کوچک و بزرگ حساس نیست).

connect

این دستور اتصال OMAPI به سرور را طبق مشخصات ارائه‌شده در دستور server آغاز می‌کند.

هر شیء تعریف‌شده در OMAPI را می‌توان ساخت، درباره آن پرس‌وجو کرد و/یا آن را تغییر داد. انواع اشیاء موجود در OMAPI در dhcpd(8) و dhclient(8) تعریف شده‌اند. هنگام استفاده از omshell، اشیاء ابتدا به صورت محلی تعریف می‌شوند، بر اساس نیاز دستکاری شده و سپس با یک شیء روی سرور پیوند می‌خورند. در هر لحظه فقط یک شیء را می‌توان دستکاری کرد. برای ساخت یک شیء محلی، استفاده کنید از:

new object-type

که در آن object-type یکی از موارد group، host یا lease است.

در این مرحله، شیئی در اختیار دارید که می‌توانید ویژگی‌های آن را مقداردهی کنید. به عنوان مثال، اگر یک شیء lease جدید با new lease ساخته شده باشد، هر یک از ویژگی‌های اجاره را می‌توان به صورت زیر تنظیم کرد:

set attribute-name = value

نام‌های Attribute در dhcpd(8) و dhclient(8) تعریف شده‌اند. اگر مقادیر رشته‌ای باشند باید درون کوتیشن قرار گیرند. بنابراین برای تنظیم آدرس IP یک اجاره، دستور زیر را اجرا می‌کنید: set ip-address = 192.168.4.50

در این مرحله، می‌توانید با دستور زیر اطلاعات این اجاره را از سرور پرس‌وجو کنید:

open

اکنون شیء lease محلی که ساخته‌اید و آدرس IP آن را تنظیم کرده‌اید، با شیء lease متناظر در سرور DHCP پیوند می‌خورد. تمام ویژگی‌های اجاره از سرور DHCP اکنون به ویژگی‌های شیء محلی تبدیل شده و در omshell نمایش داده خواهند شد.

برای پرس‌وجوی یک اجاره با آدرس 192.168.4.50 و مشاهده ویژگی‌های آن، پس از اتصال به سرور مراحل زیر را انجام دهید:

new lease

این دستور یک شیء lease محلی جدید می‌سازد.

set ip-address = 192.168.4.50

این دستور آدرس IP شیء local را برابر با 192.168.4.50 تنظیم می‌کند.

open

اکنون اگر اجاره‌ای با این آدرس IP وجود داشته باشد، تمام اطلاعات سرور DHCP در مورد آن اجاره خاص را مشاهده خواهید کرد. هر داده‌ای که متن خوانای مستقیم نباشد، به صورت مقادیر هگزادسیمال جداشده با دونقطه نمایش داده می‌شود. در این مثال، خروجی برگشتی از سرور برای کل تراکنش ممکن است به این شکل باشد:

> new "lease"
obj: lease
> set ip-address = 192.168.4.50
obj: lease
ip-address = c0:a8:04:32
> open
obj: lease
ip-address = c0:a8:04:32
state = 00:00:00:02
dhcp-client-identifier = 01:00:10:a4:b2:36:2c
client-hostname = "wendelina"
subnet = 00:00:00:06
pool = 00:00:00:07
hardware-address = 00:10:a4:b2:36:2c
hardware-type = 00:00:00:01
ends = dc:d9:0d:3b
starts = 5c:9f:04:3b
tstp = 00:00:00:00
tsfp = 00:00:00:00
cltt = 00:00:00:00

همان‌طور که مشاهده می‌کنید، آدرس IP و همچنین زمان‌های شروع و پایان اجاره به صورت هگزادسیمال نمایش داده شده‌اند.

ویژگی‌های اشیاء راه دور با استفاده از دستور set مانند قبل به‌روزرسانی می‌شوند و سپس دستور update صادر می‌شود. دستور set ویژگی‌ها را روی شیء محلی فعلی تنظیم می‌کند و دستور update این تغییرات را به سرور ارسال می‌نماید.

در ادامه مثال قبلی، اگر دستور set client-hostname = something-else صادر شود و به دنبال آن دستور update اجرا گردد، خروجی تقریباً به این شکل خواهد بود:

> set client-hostname = "something-else"
obj: lease
ip-address = c0:a8:04:32
state = 00:00:00:02
dhcp-client-identifier = 01:00:10:a4:b2:36:2c
client-hostname = "something-else"
subnet = 00:00:00:06
pool = 00:00:00:07
hardware-address = 00:10:a4:b2:36:2c
hardware-type = 00:00:00:01
ends = dc:d9:0d:3b
starts = 5c:9f:04:3b
tstp = 00:00:00:00
tsfp = 00:00:00:00
cltt = 00:00:00:00
> update
obj: lease
ip-address = c0:a8:04:32
state = 00:00:00:02
dhcp-client-identifier = 01:00:10:a4:b2:36:2c
client-hostname = "something-else"
subnet = 00:00:00:06
pool = 00:00:00:07
hardware-address = 00:10:a4:b2:36:2c
hardware-type = 00:00:00:01
ends = dc:d9:0d:3b
starts = 5c:9f:04:3b
tstp = 00:00:00:00
tsfp = 00:00:00:00
cltt = 00:00:00:00

اشیاء راه دور جدید بسیار شبیه به نحوه ویرایش اشیاء موجود در سرور ایجاد می‌شوند. با استفاده از new یک شیء محلی بسازید، ویژگی‌ها را به شکل دلخواه تنظیم کنید و سپس شیء راه دور را با همان مشخصات ایجاد کنید با استفاده از:

create

اکنون شیء جدیدی در سرور DHCP وجود دارد که با ویژگی‌های داده‌شده به شیء محلی شما مطابقت دارد. اشیاء ساخته‌شده از طریق OMAPI در فایل dhcpd.leases ذخیره می‌شوند.

به عنوان مثال، اگر نیاز به ساخت یک میزبان جدید با آدرس IP برابر 192.168.4.40 باشد، به روش زیر انجام می‌شود:

> new host
obj: host
> set name = "some-host"
obj: host
name = "some-host"
> set hardware-address = 00:80:c7:84:b1:94
obj: host
name = "some-host"
hardware-address = 00:80:c7:84:b1:94
> set hardware-type = 1
obj: host
name = "some-host"
hardware-address = 00:80:c7:84:b1:94
hardware-type = 1
> set ip-address = 192.168.4.40
obj: host
name = "some-host"
hardware-address = 00:80:c7:84:b1:94
hardware-type = 1
ip-address = c0:a8:04:28
> create
obj: host
name = "some-host"
hardware-address = 00:80:c7:84:b1:94
hardware-type = 00:00:00:01
ip-address = c0:a8:04:28
>

فایل dhcpd.leases شما سپس ورودی‌ای مانند زیر خواهد داشت:

host some-host {
  dynamic;
  hardware ethernet 00:80:c7:84:b1:94;
  fixed-address 192.168.4.40;
}

خط dynamic; نشان‌دهنده این است که این مدخل میزبان از dhcpd.conf نیامده، بلکه به صورت پویا از طریق OMAPI ایجاد شده است.

اگر می‌خواهید ویژگی خاصی را از یک شیء حذف کنید، می‌توانید با دستور unset این کار را انجام دهید. پس از حذف ویژگی، باید از دستور update برای به‌روزرسانی شیء راه دور استفاده کنید. بنابراین، اگر میزبان "some-host" از مثال قبل دیگر آدرس IP ایستا نداشته باشد، دستورها در omshell به شکل زیر خواهند بود:

obj: host
name = "some-host"
hardware-address = 00:80:c7:84:b1:94
hardware-type = 00:00:00:01
ip-address = c0:a8:04:28
> unset ip-address
obj: host
name = "some-host"
hardware-address = 00:80:c7:84:b1:94
hardware-type = 00:00:00:01
ip-address = <null>
>

یک شیء محلی را می‌توان با استفاده از دستور refresh با ویژگی‌های فعلی شیء راه دور بازخوانی و تازه کرد. این برای اشیایی که به صورت دوره‌ای تغییر می‌کنند، مانند اجاره‌ها (leases)، جهت بررسی به‌روزرسانی آن‌ها مفید است. این دستور کاربرد خاصی برای میزبان‌ها ندارد.

هر شیء راه دوری که قابل ایجاد باشد، قابل حذف نیز هست. این کار با ساخت یک شیء محلی جدید، تنظیم ویژگی‌ها، پیوند شیء محلی و راه دور با استفاده از open، و سپس استفاده از دستور remove انجام می‌شود. اگر میزبان "some-host" از مثال قبل به اشتباه ساخته شده باشد، می‌توان آن را به شکل زیر تصحیح کرد:

obj: host
name = "some-host"
hardware-address = 00:80:c7:84:b1:94
hardware-type = 00:00:00:01
ip-address = c0:a8:04:28
> remove
obj: <null>
>

دستور help تمام دستورهای موجود در omshell را به همراه برخی نکات نحوه استفاده (سینتکس) چاپ می‌کند.

dhcpctl(3), omapi(3), dhcpd(8), dhclient(8), dhcpd.conf(5), dhclient.conf(5).

دستور omshell توسط ISC نگهداری می‌شود. برای کسب اطلاعات بیشتر درباره Internet Systems Consortium به https://www.isc.org مراجعه کنید.