'\" t .\" Title: NetworkManager-dispatcher .\" Author: .\" Generator: DocBook XSL Stylesheets vsnapshot .\" Date: 08/21/2026 .\" Manual: Network management daemons .\" Source: NetworkManager-dispatcher 1.58.1 .\" Language: Persian .\" .TH "NETWORKMANAGER\-DISPATCHER" "8" "" "NetworkManager\-dispatcher 1\&" "Network management daemons" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "نام (NAME)" NetworkManager-dispatcher \- اجرای اسکریپت‌های کاربر برای NetworkManager .SH "خلاصه دستور (SYNOPSIS)" .HP \w'\fBNetworkManager\ \fR\fB[OPTIONS...]\fR\ 'u \fBNetworkManager \fR\fB[OPTIONS...]\fR .SH "توضیحات (DESCRIPTION)" .PP سرویس NetworkManager\-dispatcher یک سرویس فعال‌شونده از طریق D\-Bus است که اسکریپت‌های ارائه‌شده توسط کاربر را هنگام وقوع تغییرات خاص در NetworkManager اجرا می‌کند\&. .PP سرویس NetworkManager\-dispatcher اسکریپت‌های موجود در دایرکتوری /{etc,usr/lib}/NetworkManager/dispatcher\&.d یا زیردایرکتوری‌های آن را به ترتیب الفبایی در پاسخ به رویدادهای شبکه اجرا خواهد کرد\&. فایل‌های موجود در /etc نسبت به فایل‌های هم‌نام در /usr/lib اولویت دارند\&. هر اسکریپت باید یک فایل اجرایی معمولی با مالکیت root باشد\&. افزون بر این، نباید توسط گروه یا دیگران قابل نوشتن باشد، و نباید دارای بیت setuid باشد\&. .PP هر اسکریپت دو آرگومان دریافت می‌کند؛ اولی نام رابط دستگاهی است که عملیات روی آن رخ داده است و دومی کنش (action) است\&. برای کنش‌های مربوط به دستگاه، رابط همان نام رابط هسته است که برای پیکربندی IP مناسب است\&. بنابراین، بسته به مورد، یکی از مقادیر VPN_IP_IFACE، DEVICE_IP_IFACE یا DEVICE_IFACE خواهد بود\&. برای کنش \fIhostname\fR نام دستگاه همیشه برابر با "none" است\&. برای \fIconnectivity\-change\fR و \fIdns\-change\fR این مقدار خالی است\&. .PP کنش‌ها عبارتند از: .PP \fIpre\-up\fR .RS 4 رابط به شبکه متصل شده است اما هنوز به‌طور کامل فعال نشده است\&. اسکریپت‌هایی که برای این رویداد عمل می‌کنند باید در دایرکتوری /etc/NetworkManager/dispatcher\&.d/pre\-up\&.d قرار داده شوند یا پیوند نمادین (symlink) شوند، و NetworkManager پیش از اعلام فعال‌سازی کامل رابط به برنامه‌ها، منتظر اتمام اجرای اسکریپت خواهد ماند\&. .RE .PP \fIup\fR .RS 4 رابط فعال شده است\&. .RE .PP \fIpre\-down\fR .RS 4 رابط غیرفعال خواهد شد اما هنوز از شبکه قطع نشده است\&. اسکریپت‌هایی که برای این رویداد عمل می‌کنند باید در دایرکتوری /etc/NetworkManager/dispatcher\&.d/pre\-down\&.d قرار داده شوند یا پیوند نمادین شوند، و NetworkManager پیش از قطع رابط از شبکه‌اش، منتظر اتمام اجرای اسکریپت خواهد ماند\&. توجه داشته باشید که این رویداد برای قطع‌شدن‌های اجباری، مانند قطع شدن سیگنال حامل (carrier) یا تضعیف سیگنال بی‌سیم، منتشر نمی‌شود\&. این رویداد تنها زمانی منتشر می‌شود که فرصتی برای رسیدگی تمیز به رویداد قطع اتصال شبکه وجود داشته باشد\&. .RE .PP \fIdown\fR .RS 4 رابط غیرفعال شده است\&. .RE .PP \fIvpn\-pre\-up\fR .RS 4 اتصال VPN به شبکه متصل شده است اما هنوز به‌طور کامل فعال نشده است\&. اسکریپت‌هایی که برای این رویداد عمل می‌کنند باید در دایرکتوری /etc/NetworkManager/dispatcher\&.d/pre\-up\&.d قرار داده شوند یا پیوند نمادین شوند، و NetworkManager پیش از اعلام فعال‌سازی کامل VPN به برنامه‌ها، منتظر اتمام اجرای اسکریپت خواهد ماند\&. .RE .PP \fIvpn\-up\fR .RS 4 یک اتصال VPN فعال شده است\&. .RE .PP \fIvpn\-pre\-down\fR .RS 4 اتصال VPN غیرفعال خواهد شد اما هنوز از شبکه قطع نشده است\&. اسکریپت‌هایی که برای این رویداد عمل می‌کنند باید در دایرکتوری /etc/NetworkManager/dispatcher\&.d/pre\-down\&.d قرار داده شوند یا پیوند نمادین شوند، و NetworkManager پیش از قطع VPN از شبکه‌اش، منتظر اتمام اجرای اسکریپت خواهد ماند\&. توجه داشته باشید که این رویداد برای قطع‌شدن‌های اجباری، مانند بسته شدن غیرمنتظره VPN یا از دست رفتن اتصال کلی، منتشر نمی‌شود\&. این رویداد تنها زمانی منتشر می‌شود که فرصتی برای رسیدگی تمیز به رویداد قطع اتصال VPN وجود داشته باشد\&. .RE .PP \fIvpn\-down\fR .RS 4 یک اتصال VPN غیرفعال شده است\&. .RE .PP \fIhostname\fR .RS 4 نام میزبان (hostname) سیستم به‌روزرسانی شده است\&. برای دریافت آن از gethostname(2) استفاده کنید\&. نام رابط (آرگومان نخست) خالی است و هیچ متغیر محیطی برای این کنش تنظیم نمی‌شود\&. .RE .PP \fIdhcp4\-change\fR .RS 4 اجاره (lease) در DHCPv4 تغییر کرده است (تمدید، اتصال مجدد و غیره)\&. .RE .PP \fIdhcp6\-change\fR .RS 4 اجاره در DHCPv6 تغییر کرده است (تمدید، اتصال مجدد و غیره)\&. .RE .PP \fIconnectivity\-change\fR .RS 4 وضعیت اتصال شبکه تغییر کرده است (عدم اتصال، آنلاین شدن و غیره)\&. .RE .PP \fIreapply\fR .RS 4 اتصال مجدداً روی دستگاه اعمال شد\&. .RE .PP \fIdns\-change\fR .RS 4 پیکربندی DNS تغییر کرده است\&. این کنش حتی اگر NetworkManager طوری پیکربندی شده باشد که resolv\&.conf را مدیریت نکند (برای نمونه از طریق dns=none) برانگیخته می‌شود\&. در چنین حالتی، اسکریپت توزیع‌کننده می‌تواند با نگاه کردن به فایل /run/NetworkManager/resolv\&.conf پیکربندی DNS ارائه‌شده توسط اتصالات فعال کنونی را کشف کند\&. .RE .PP \fIdevice\-add\fR .RS 4 این کنش زمانی فراخوانی می‌شود که یک اتصال از نوع generic ویژگی generic\&.device\-handler را تنظیم کرده باشد\&. این ویژگی نام اسکریپت توزیع‌کننده‌ای را مشخص می‌کند که باید در دایرکتوری /{etc,usr/lib}/NetworkManager/dispatcher\&.d/device اجرا شود\&. توجه داشته باشید که برخلاف سایر کنش‌ها، تنها یک اسکریپت اجرا می‌شود\&. .sp اسکریپت باید هر اقدام لازم برای ایجاد دستگاه مربوط به اتصال generic را انجام دهد\&. در صورت خاتمه موفقیت‌آمیز، اسکریپت مقدار صفر را برمی‌گرداند\&. در غیر این صورت، برای نشان دادن خطا یک مقدار غیرصفر برمی‌گرداند\&. اسکریپت می‌تواند با نوشتن در خروجی استاندارد (stdout)، مقادیر را به NetworkManager بازگرداند؛ هر خط باید شامل یک نام کلید به همراه علامت مساوی \*(Aq=\*(Aq و مقدار کلید باشد\&. کلیدهایی که در حال حاضر شناخته می‌شوند عبارتند از: .PP \fIIFINDEX\fR .RS 4 نمایانگر نمایه رابط (interface index) مربوط به رابط ایجادشده توسط اسکریپت است\&. این کلید هنگام موفقیت اسکریپت الزامی است؛ اگر تنظیم نشود، فعال‌سازی شکست خواهد خورد\&. در صورت شکست اسکریپت، این کلید نادیده گرفته می‌شود\&. .RE .PP \fIERROR\fR .RS 4 یک پیام خطا که دلیل شکست اسکریپت را مشخص می‌کند تعیین می‌نماید\&. در صورت موفقیت اسکریپت نادیده گرفته می‌شود\&. .RE .sp از آنجا که سرویس توزیع‌کننده برای تجزیه این کلیدها خروجی استاندارد را دریافت می‌کند، هر چیزی که در stdout نوشته شود در گزارش لاگ ژورنال سرویس توزیع‌کننده نمایش داده نخواهد شد\&. اگر می‌خواهید پیام‌هایی را در ژورنال چاپ کنید (مثلاً برای اشکال‌زدایی)، از stderr استفاده کنید\&. تنها نخستین ۸ کیلوبایت (8KiB) از stdout و در میان آن تنها ۶۴ خط نخست در نظر گرفته می‌شوند؛ باقی نادیده گرفته می‌شود\&. .RE .PP \fIdevice\-delete\fR .RS 4 این کنش همتای device\-add است و برای حذف دستگاه مربوط به یک اتصال generic فراخوانی می‌شود\&. تمامی جنبه‌های شرح‌داده‌شده برای device\-add در مورد این کنش نیز صدق می‌کنند، با این استثنا که کلید \fIIFINDEX\fR نادیده گرفته می‌شود\&. نیازی به حذف پیوند هسته در گرداننده (handler) نیست زیرا NetworkManager قبلاً این کار را انجام می‌دهد؛ بنابراین این کنش برای هرگونه پاک‌سازی اضافی مورد نیاز مفید است\&. .RE .PP محیط اجرا (environment) حاوی اطلاعات بیشتری درباره رابط و اتصال است\&. متغیرهای زیر برای استفاده در اسکریپت‌های توزیع‌کننده در دسترس هستند: .PP \fINM_DISPATCHER_ACTION\fR .RS 4 کنش توزیع‌کننده مانند "up" یا "dhcp4\-change"، همسان با آرگومان نخست خط فرمان\&. از نسخه 1\&.12\&.0 NetworkManager به بعد\&. .RE .PP \fICONNECTION_UUID\fR .RS 4 شناسه یکتای جهانی (UUID) نمایه اتصال\&. .RE .PP \fICONNECTION_ID\fR .RS 4 نام (ID) نمایه اتصال\&. .RE .PP \fICONNECTION_DBUS_PATH\fR .RS 4 مسیر D\-Bus اتصال در NetworkManager\&. .RE .PP \fICONNECTION_FILENAME\fR .RS 4 نام فایل پشتیبان نمایه اتصال (در صورت وجود)\&. .RE .PP \fICONNECTION_EXTERNAL\fR .RS 4 اگر مقدار آن "1" باشد، نشان می‌دهد که اتصال یک پیکربندی شبکه ایجادشده در خارج از NetworkManager را توصیف می‌کند\&. .RE .PP \fIDEVICE_IFACE\fR .RS 4 نام رابط کنترلی دستگاه\&. بسته به نوع دستگاه، این نام با \fIDEVICE_IP_IFACE\fR متفاوت است\&. برای نمونه برای دستگاه‌های ADSL می‌تواند \*(Aqatm0\*(Aq یا برای دستگاه‌های WWAN ممکن است \*(AqttyUSB0\*(Aq باشد\&. .RE .PP \fIDEVICE_IP_IFACE\fR .RS 4 نام رابط IP دستگاه\&. این همان رابط شبکه‌ای است که آدرس‌های IP و مسیرها روی آن پیکربندی خواهند شد\&. .RE .PP \fIIP4_ADDRESS_N\fR .RS 4 آدرس IPv4 در قالب "address/prefix gateway"، که در آن N عددی از 0 تا (تعداد آدرس‌های IPv4 منهای ۱) است\&. مورد gateway در این متغیر منسوخ شده است، به جای آن از IP4_GATEWAY استفاده کنید\&. .RE .PP \fIIP4_NUM_ADDRESSES\fR .RS 4 این متغیر حاوی تعداد آدرس‌های IPv4 است که اسکریپت ممکن است انتظار داشته باشد\&. .RE .PP \fIIP4_GATEWAY\fR .RS 4 آدرس گیت‌وی (دروازه) IPv4 با قالب‌بندی سنتی اعداد و نقطه\&. .RE .PP \fIIP4_ROUTE_N\fR .RS 4 مسیر IPv4 در قالب "address/prefix next\-hop metric"، که در آن N عددی از 0 تا (تعداد مسیرهای IPv4 منهای ۱) است\&. .RE .PP \fIIP4_NUM_ROUTES\fR .RS 4 این متغیر حاوی تعداد مسیرهای IPv4 است که اسکریپت ممکن است انتظار داشته باشد\&. .RE .PP \fIIP4_NAMESERVERS\fR .RS 4 این متغیر حاوی فهرستی از سرورهای DNS است که با فاصله از هم جدا شده‌اند\&. .RE .PP \fIIP4_DOMAINS\fR .RS 4 این متغیر حاوی فهرستی از دامنه‌های جستجو است که با فاصله از هم جدا شده‌اند\&. .RE .PP \fIDHCP4_\fR .RS 4 اگر اتصال برای پیکربندی آدرس از DHCP استفاده کرده باشد، پیکربندی DHCP دریافت‌شده با استفاده از نام‌های استاندارد گزینه‌های DHCP با پیشوند "DHCP4_" در متغیرهای محیطی ارسال می‌شود، مانند "DHCP4_HOST_NAME=foobar"\&. .RE .PP \fIIP6_ و DHCP6_\fR .RS 4 متغیرهای مشابه IPv4 برای IPv6 نیز در دسترس هستند، اما پیشوندهای آن‌ها به ترتیب IP6_ و DHCP6_ است\&. .RE .PP \fICONNECTIVITY_STATE\fR .RS 4 وضعیت اتصال شبکه، که می‌تواند مقادیر تعریف‌شده توسط نوع NMConnectivityState از API مربوط به org\&.freedesktop\&.NetworkManager D\-Bus را بگیرد: UNKNOWN، NONE، PORTAL، LIMITED یا FULL\&. توجه: این متغیر فقط برای کنش‌های connectivity\-change تنظیم می‌شود\&. .RE .PP در صورت استفاده از VPN، متغیر VPN_IP_IFACE تنظیم می‌شود، و متغیرهای *IP4_ و *IP6_ با پیشوند VPN نیز برون‌ریزی (export) می‌شوند، مانند VPN_IP4_ADDRESS_0 و VPN_IP4_NUM_ADDRESSES\&. .PP محتوای تنظیم user برای اتصالی که در حال فعال شدن است نیز از طریق متغیرهای محیطی ارسال می‌شود\&. هر کلید در متغیری با نام CONNECTION_USER_ متصل‌شده به کدگذاری نام کلید ذخیره می‌شود\&. این کدگذاری به صورت زیر عمل می‌کند: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} حروف کوچک به حروف بزرگ تبدیل می‌شوند .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} حروف بزرگ با یک زیرخط (underscore) پیشوندگذاری می‌شوند .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} اعداد تغییر نمی‌کنند .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} نقطه با دو زیرخط جایگزین می‌شود .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} هر نویسه دیگر با یک زیرخط و به دنبال آن نمایش هشت‌هشتی (اکتال) ۳ رقمی آن کدگذاری می‌شود .RE .sp برای نمونه، کلید test\&.foo\-Bar2 در متغیری با نام CONNECTION_USER_TEST__FOO_055_BAR2 ذخیره می‌شود\&. .PP اسکریپت‌های توزیع‌کننده یکی پس از دیگری، اما به صورت ناهمگام (asynchronous) از فرایند اصلی NetworkManager اجرا می‌شوند و در صورتی که اجرای آن‌ها بیش از حد طول بکشد، متوقف (kill) خواهند شد\&. اگر اسکریپت شما ممکن است زمان نامشخصی برای تکمیل نیاز داشته باشد، باید یک فرایند فرزند (child process) ایجاد کنید و فرایند والد بلافاصله خاتمه یابد\&. اسکریپت‌هایی که پیوندهای نمادین اشاره‌کننده به داخل دایرکتوری /etc/NetworkManager/dispatcher\&.d/no\-wait\&.d/ هستند، بلافاصله، بدون انتظار برای پایان اسکریپت‌های پیشین و به صورت موازی اجرا می‌شوند\&. همچنین توجه داشته باشید که وقتی یک اسکریپت در صف قرار گرفت، همواره اجرا خواهد شد، حتی اگر یک رویداد بعدی آن را منسوخ یا بی‌استفاده کند\&. (برای نمونه، اگر یک رابط بالا بیاید و سپس سریعاً دوباره پایین برود، این احتمال وجود دارد که یک یا چند اسکریپت "up" پس از پایین رفتن رابط اجرا شوند\&.) .SH "اشکالات (BUGS)" .PP لطفاً هرگونه اشکالی که در NetworkManager پیدا می‌کنید را در \m[blue]\fBسامانه ردیابی مشکلات NetworkManager\fR\m[]\&\s-2\u[1]\d\s+2 گزارش دهید\&. .SH "همچنین ببینید (SEE ALSO)" .PP \m[blue]\fBصفحه خانگی NetworkManager\fR\m[]\&\s-2\u[2]\d\s+2, \fBNetworkManager\fR(8), .SH "نکات (NOTES)" .IP " 1." 4 سامانه ردیابی مشکلات NetworkManager .RS 4 \%https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/issues .RE .IP " 2." 4 صفحه خانگی NetworkManager .RS 4 \%https://networkmanager.dev .RE