DOCHECKGROUPS(8) InterNetNews Documentation DOCHECKGROUPS(8)

docheckgroups - پردازش پیام‌های کنترلی checkgroups و خروجی دادن فهرستی از تغییرات

docheckgroups [-u] [include-pattern [exclude-pattern]]

دستور docheckgroups معمولاً توسط controlchan جهت پردازش پیام‌های کنترلی checkgroups اجرا می‌شود. این ابزار فهرستی از گروه‌های خبری را به همراه توضیحات آن‌ها از ورودی استاندارد می‌خواند. این فهرست باید مشابه پروندهٔ newsgroups(5) قالب‌بندی شده باشد: هر خط شامل نام یک گروه خبری و به دنبال آن یک یا چند نویسهٔ تب (tabulation) و سپس توضیحات آن است.

ابزار docheckgroups فقط وجود گروه‌های خبری‌ای را بررسی می‌کند که با include-pattern (یک عبارت باقاعدهٔ egrep مانند "^comp\..*$" برای گروه‌های خبری آغازشونده با "comp.") مطابقت داشته باشند و با exclude-pattern (که آن نیز یک عبارت egrep است) مطابقت نداشته باشند، مگر برای گروه‌های خبری ذکرشده در پروندهٔ pathetc/localgroups. این پرونده نیز مشابه پروندهٔ newsgroups(5) قالب‌بندی می‌شود و باید شامل گروه‌های خبری محلی باشد که در غیر این صورت ممکن بود برای حذف پیشنهاد شوند. نیازی به قرار دادن گروه‌های خبری محلی سلسله‌مراتب‌هایی که هیچ پیام کنترلی checkgroups برای آن‌ها ارسال نمی‌شود نیست، مگر اینکه متن‌های checkgroups را برای آن‌ها به صورت دستی پردازش کنید. خطوطی که با علامت هش ("#") آغاز می‌شوند در این پرونده نادیده گرفته می‌شوند. تمامی گروه‌های خبری و توضیحات ذکرشده در pathetc/localgroups به پیام‌های checkgroups پردازش‌شده الحاق می‌شوند.

اگر exclude-pattern مشخص شود، include-pattern نیز باید پیش از آن داده شود (می‌توانید از یک رشتهٔ خالی ("") استفاده کنید اگر می‌خواهید همهٔ گروه‌های خبری را شامل شود). با این وجود، docheckgroups تنها گروه‌های خبری موجود در سلسله‌مراتب‌های سطح بالایی را بررسی می‌کند که در checkgroups حضور دارند.

سپس، docheckgroups پرونده‌های active و newsgroups را بررسی کرده و فهرستی از تغییرات (در صورت وجود) را در خروجی استاندارد خود نمایش می‌دهد. این برنامه به صورت پیش‌فرض هیچ تغییری اعمال نمی‌کند؛ تنها مشخص می‌سازد که چه مواردی باید تغییر کنند:

  • گروه‌های خبری که باید حذف شوند (در پروندهٔ active وجود دارند اما در checkgroups نیستند) و دستورهای مربوط به ctlinnd برای انجام این کار؛
  • گروه‌های خبری که باید اضافه شوند (در پروندهٔ active نیستند اما در checkgroups وجود دارند) و دستورهای مربوط به ctlinnd برای انجام این کار؛
  • گروه‌های خبری که وضعیت نظارت آن‌ها به اشتباه مدیریت‌شده (moderated) یا مدیریت‌نشده (unmoderated) علامت خورده است (هم در پروندهٔ active و هم در checkgroups وجود دارند اما وضعیت آن‌ها مغایرت دارد) و دستورهای مربوط به ctlinnd برای اصلاح آن؛
  • توضیحاتی که باید حذف شوند (در پروندهٔ newsgroups وجود دارند اما در checkgroups نیستند)؛
  • توضیحاتی که باید اضافه شوند (در پروندهٔ newsgroups نیستند اما در checkgroups وجود دارند).

خروجی docheckgroups را می‌توان به mod-active هدایت (pipe) کرد (که سرور خبر را متوقف می‌کند، پروندهٔ active را مطابق آن به‌روزرسانی کرده، دوباره بارگذاری می‌کند و فعالیت سرور خبر را از سر می‌گیرد) یا به پوسته ارسال نمود (دستورهای ctlinnd یکی‌یکی پردازش خواهند شد). به‌منظور به‌روزرسانی پروندهٔ newsgroups، باید گزینهٔ -u به docheckgroups داده شود.

هنگام پردازش دستی یک checkgroups، همواره توصیه می‌شود ابتدا خروجی خام docheckgroups را بررسی کنید. سپس، اگر همه‌چیز درست به نظر رسید، از mod-active و پرچم -u استفاده نمایید.

اگر این پرچم داده شود، docheckgroups پروندهٔ newsgroups را به‌روزرسانی خواهد کرد: توضیحات منسوخ را حذف کرده و توضیحات جدید را اضافه می‌کند. همچنین این پرونده را بر اساس الفبا مرتب نموده و قالب کلی آن را بهبود می‌بخشد (برای توضیح در مورد تعداد تب‌های ترجیحی، newsgroups(5) را ببینید).

برای درک بهتر نحوهٔ کار docheckgroups، در اینجا مثال‌هایی با پروندهٔ active زیر آورده شده است:

a.first 0000000000 0000000001 y
a.second.announce 0000000000 0000000001 y
a.second.group 0000000000 0000000001 y
b.additional 0000000000 0000000001 y
b.third 0000000000 0000000001 y
c.fourth 0000000000 0000000001 y

پروندهٔ newsgroups زیر (با استفاده از تب‌ها):

a.first             First group.
a.second.announce   Announce group.
a.second.group      Second group.
b.third             Third group.
c.fourth            Fourth group.

و پروندهٔ localgroups زیر (با استفاده از تب‌ها):

b.additional        A local newsgroup I want to keep.

پیام checkgroups مورد پردازش در پروندهٔ test قرار دارد که شامل موارد زیر است:

a.first             First group.
a.second.announce   Announce group. (Moderated)
a.second.group      Second group.
b.third             Third group.
c.fourth            Fourth group.

اگر دستور زیر را اجرا کنیم:

cat test | docheckgroups

دستور docheckgroups گزارش می‌دهد که گروه a.second.announce به اشتباه مدیریت‌نشده (unmoderated) علامت‌گذاری شده و توضیحات آن منسوخ است. افزون بر این، دو توضیح جدید برای افزودن ذکر خواهند شد (توضیح جدید برای a.second.announce و توضیح از دست رفته برای b.additional -- که در واقع باید در پروندهٔ newsgroups باشد و نه تنها در localgroups). اکنون که خروجی docheckgroups را بررسی کرده و با تغییرات موافقیم، آن را با پرچم -u اجرا می‌کنیم تا پروندهٔ newsgroups به‌روزرسانی شود و خروجی استاندارد را به mod-active هدایت می‌کنیم تا پروندهٔ active به‌روزرسانی شود:

cat test | docheckgroups -u | mod-active

تمام شد!

اکنون فرض کنید این دستور را اجرا کنیم:

cat test | docheckgroups "^c\..*$"

هیچ خروجی‌ای تولید نمی‌شود (در واقع، همه‌چیز برای سلسله‌مراتب c.* درست است). نتیجه مشابه می‌بود اگر پروندهٔ test تنها شامل checkgroups برای سلسله‌مراتب c.* می‌بود (docheckgroups سلسله‌مراتب‌های a.* و b.* را بررسی نمی‌کرد، حتی اگر در include-pattern قرار داشتند).

به‌منظور بررسی هم a.* و هم c.*، می‌توانید اجرا کنید:

cat test | docheckgroups "^a\..*$|^c\..*$"

و اگر می‌خواهید a.* بررسی شود اما a.second.* بررسی نشود، می‌توانید اجرا کنید:

cat test | docheckgroups "^a\..*$" "^a\.second\..*$"

در مثال ما، docheckgroups سپس گروه‌های a.second.announce و a.second.group را برای حذف پیشنهاد می‌کند زیرا آن‌ها در پروندهٔ active وجود دارند (همین موضوع برای توضیحات آن‌ها نیز صدق می‌کند). با این حال، اگر مایلید a.second.announce را نگه دارید، کافی است این گروه را به localgroups اضافه کنید تا docheckgroups دیگر آن را برای حذف مطرح نکند.

خود اسکریپت شل که برای پردازش checkgroups استفاده می‌شود.
فهرست گروه‌های خبری محلی به همراه توضیحات آن‌ها.

مستندات توسط Julien Elie برای InterNetNews نوشته شده است.

active(5)، controlchan(8)، ctlinnd(8)، mod-active(8)، newsgroups(5).

2022-07-10 INN 2.7.4