DHCPCD-RUN-HOOKS(8) System Manager's Manual DHCPCD-RUN-HOOKS(8)

dhcpcd-run-hooks — اسکریپت پیکربندی کلاینت DHCP

dhcpcd-run-hooks توسط dhcpcd(8) برای اجرای اسکریپت‌های قلاب (hook) سیستمی و تعریف‌شده توسط کاربر استفاده می‌شود. اسکریپت‌های قلاب سیستمی در مسیر /usr/lib/dhcpcd/dhcpcd-hooks قرار دارند و قلاب‌های تعریف‌شده توسط کاربر /etc/dhcpcd.enter-hook و /etc/dhcpcd.exit-hook هستند. نصب پیش‌فرض، اسکریپت‌های قلابی برای پیکربندی /etc/resolv.conf و نام میزبان (hostname) فراهم می‌کند. توزیع شما ممکن است اسکریپت‌های قلاب دیگری، مثلاً برای پیکربندی ntp یا ypbind را نیز شامل شده باشد. همچنین یک قلاب آزمایشی نیز ارائه شده است که متغیرهای dhcp پیام DISCOVER را در کنسول چاپ می‌کند.

اسکریپت‌های قلاب به جای اجرا در فرآیند مستقل خود، در شل (shell) جاری بارگذاری می‌شوند. این موضوع به هر اسکریپت قلاب، مانند /etc/dhcpcd.enter-hook اجازه می‌دهد متغیرهای محیطی را سفارشی کرده یا توابع جایگزینی برای قلاب‌های بعدی در زنجیره فراهم کند. به همین دلیل، استفاده از دستورات داخلی شل مانند exit, exec یا موارد مشابه باعث خروج dhcpcd-run-hooks در همان نقطه خواهد شد.

هر بار که dhcpcd-run-hooks فراخوانی می‌شود، $interface روی رابطی که dhcpcd روی آن اجرا شده تنظیم می‌گردد و $reason روی دلیل فراخوانی dhcpcd-run-hooks تنظیم می‌شود. اطلاعات DHCP که باید پیکربندی شوند در متغیرهایی که با کلمه new_ آغاز می‌شوند نگهداری می‌گردند و اطلاعات قدیمی DHCP که باید حذف شوند در متغیرهایی که با کلمه old_ شروع می‌شوند قرار دارند. dhcpcd می‌تواند فهرست کامل متغیرهایی را که می‌شناسد با استفاده از آرگومان -V, --variables نمایش دهد.

در ادامه فهرستی از دلایلی که ممکن است dhcpcd-run-hooks به خاطر آن‌ها فراخوانی شود آمده است:

دستور dhcpcd در حال راه‌اندازی است و هرگونه مقداردهی اولیه که لازم است باید اکنون انجام شود.
دستور dhcpcd برقراری حامل سیگنال (carrier) را تشخیص داده است. این پیام معمولاً صرفاً یک اعلان است و نیازی به اقدام خاصی ندارد.
دستور dhcpcd حامل سیگنال را از دست داده است. ممکن است کابل جدا شده یا اتصال به نقطه دسترسی بی‌سیم قطع شده باشد.
دستور dhcpcd حامل سیگنال را از دست داده اما پیکربندی رابط حفظ شده است. برای این منظور، سیستم‌عامل باید از رومینگ بی‌سیم یا پایداری IP پشتیبانی کند.
|
دستور dhcpcd سرور DHCP را از آدرس خود مطلع کرده و سایر جزئیات پیکربندی را به دست آورده است.
|
دستور dhcpcd یک اجاره (lease) جدید از سرور DHCP دریافت کرده است.
|
دستور dhcpcd اجاره خود را تمدید کرده است.
|
دستور dhcpcd به یک سرور DHCP جدید متصل (rebind) شده است.
|
دستور dhcpcd با موفقیت درخواست اجاره از سرور DHCP ثبت کرده است.
|
دستور dhcpcd اجاره را آزاد کرده است.
دستور dhcpcd یک پیشوند واگذارشده (delegated prefix) را به رابط اختصاص داده است.
دستور dhcpcd یک آدرس IPV4LL دریافت کرده، یا یکی از آن‌ها حذف شده است.
دستور dhcpcd با یک پیکربندی ایستا که از سرور DHCP دریافت نشده، پیکربندی شده است.
دستور dhcpcd در حال پایش رابط است تا ابزار شخص ثالثی به آن آدرس IP اختصاص دهد.
|
دستور dhcpcd نتوانست با هیچ سرور DHCP ارتباط برقرار کند، اما توانست از یک اجاره قدیمی استفاده کند.
|
اجاره یا وضعیت dhcpcd منقضی شده و موفق به دریافت اجاره جدید نشده است.
دستور dhcpcd یک پیام NAK از سرور DHCP دریافت کرده است. با این مورد باید مانند EXPIRE رفتار شود.
به dhcpcd دستور داده شده است که یک رابط را مجدداً پیکربندی کند.
دستور dhcpcd یک اعلان روتر (Router Advertisement) IPv6 دریافت کرده یا یکی از آن‌ها منقضی شده است.
|
اجرای dhcpcd روی رابط متوقف شده است.
اجرای dhcpcd به طور کامل متوقف شده است.
رابط شبکه حذف شده است.
دستور dhcpcd نتوانست روی رابط کار کند. این حالت معمولاً زمانی رخ می‌دهد که dhcpcd از رابط خام پشتیبانی نکند؛ یعنی نمی‌تواند به عنوان کلاینت DHCP یا ZeroConf عمل نماید. پیکربندی ایستا و DHCP INFORM همچنان مجاز هستند.
دستور dhcpcd یک پیشنهاد (OFFER) از سرور DHCP دریافت کرده است اما رابط را پیکربندی نخواهد کرد. این مورد عمدتاً برای آزمایش این که متغیرها به درستی برای پردازش توسط اسکریپت پر شده‌اند به کار می‌رود.

dhcpcd تمام متغیرهای محیطی به جز $PATH را پاک خواهد کرد. سپس متغیرهای زیر همراه با متغیرهای ارائه‌شده توسط پروتکل تنظیم خواهند شد:

نام رابط شبکه.
پروتکلی که رویداد را ایجاد کرده است.
همان‌طور که در بالا توضیح داده شد.
شناسه فرآیند (PID) dhcpcd.
وضعیت پیوند (link) مربوط به $interface: unknown, up یا down.
اولویت $interface که مقدار کمتر ترجیح داده می‌شود.
اگر $interface بی‌سیم باشد، در غیر این صورت 0.
پرچم‌های $interface.
مقدار MTU مربوط به $interface.
شناسه SSID که interface به آن متصل است.
فهرستی از رابط‌ها بر اساس اولویت.
اگر dhcpcd رابط interface را پیکربندی کرده باشد، در غیر این صورت false.
اگر رابط interface فعال (up) باشد، در غیر این صورت false. این فراتر از IFF_UP است و ممکن است با آن برابر نباشد.
اگر رابط interface غیرفعال (down) باشد، در غیر این صورت false. این فراتر از IFF_UP است و ممکن است با آن برابر نباشد.
خانواده آدرسِ (Address family) در حال انتظار، مطابق با تعریف در dhcpcd.conf(5).
نام نمایه (profile) انتخاب‌شده از dhcpcd.conf(5).
فهرست جداشده با فاصله از آدرس‌های اختصاص‌یافته از پیشوندهای واگذارشده.

هنگامی که dhcpcd-run-hooks اجرا می‌شود، ابتدا /etc/dhcpcd.enter-hook, سپس هر اسکریپتی که در /usr/lib/dhcpcd/dhcpcd-hooks یافت شود را به ترتیب الفبایی، و در نهایت /etc/dhcpcd.exit-hook را بارگذاری می‌کند.

dhcpcd(8)

Roy Marples <roy@marples.name>

لطفاً آن‌ها را به https://roy.marples.name/projects/dhcpcd گزارش دهید.

dhcpcd محتوای هر گزینه را بر اساس نوع کدگذاری آن اعتبارسنجی خواهد کرد. برای کدگذاری‌های رشته‌ای (string)، اسکی (ascii)، خام (raw) یا binhex، اعتبارسنجی آن متناسب با هدف مورد نظر بر عهده کاربر است.

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

August 14, 2026 Linux 6.12.107+deb13-amd64