'\" 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