INNXBATCH(8) InterNetNews Documentation INNXBATCH(8)

innxbatch, sendxbatches - ارسال مقاله‌های دسته‌ای یوزنت (xbatched) به سرور دوردست NNTP

innxbatch [-Dv] [-t timeout] [-T timeout] host file [file ...]

innxbatch -i [-Dv] [-t timeout] [-T timeout] host

sendxbatches sitename host file [file ...]

دستور innxbatch به درگاه ۱۱۹ کارگزار NNTP در میزبان مشخص‌شده (host) متصل می‌شود و پرونده‌های xbatch مشخص‌شده را با استفاده از افزونهٔ XBATCH در پروتکل NNTP برای آن ارسال می‌کند. این پرونده‌ها یا از طریق خط فرمان مشخص می‌شوند یا در صورت استفاده از گزینهٔ -i از ورودی استاندارد خوانده می‌شوند.

هر پرونده پس از انتقال موفقیت‌آمیز، حذف می‌شود.

اگر یک خطای ارتباطی مانند شکست در write(2) یا یک پاسخ غیرمنتظره از کارگزار راه‌دور رخ دهد، innxbatch ارسال را متوقف کرده و تمام پرونده‌های باقی‌مانده را برای تلاش مجدد در آینده، دست‌نخورده باقی می‌گذارد.

اگر اطلاعات و اعتبارنامه‌های احراز هویت کارگزار راه‌دور در پروندهٔ passwd.nntp در دایرکتوری pathetc موجود باشد، innxbatch از آن‌ها برای احراز هویت استفاده خواهد کرد.

دستور innxbatch به خودی خود از هیچ سازوکار قفل‌گذاری پرونده استفاده نمی‌کند. در بدترین حالت، یک دسته ممکن است توسط دو اجرای مستقل و همزمان از innxbatch دو بار به صورت موازی ارسال شود. برای جلوگیری از این رخداد، این برنامه باید توسط اسکریپتی فراخوانی شود که از طریق cron(8) اجرا شده و از shlock(8) برای قفل کردن نام میزبان بهره می‌برد، و به دنبال آن دستور "ctlinnd flush" برای تخلیه (flush) پروندهٔ دسته‌ای اجرا شود. sendxbatches چنین پوششی (wrapper) برای innxbatch است. این اسکریپت اطمینان حاصل می‌کند که تنها یک نمونه اجرا می‌شود، sitename (همان‌طور که در ورودی newsfeeds استفاده شده) را تخلیه (flush) می‌کند و پرونده‌های داده‌شده به عنوان آرگومان را به host ارسال می‌نماید.

از آنجا که افزونهٔ XBATCH یک دستور استاندارد در پروتکل NNTP نیست، برخی از کارگزارهای خبری آن را شناسایی نمی‌کنند. علاوه بر این، برای پذیرش دسته‌ها از همتایان راه‌دور از طریق XBATCH، باید این قابلیت را به صراحت با تنظیم xbatch در پروندهٔ incoming.conf فعال کنید. به جای استفاده از innxbatch می‌توانید استفاده از innfeed یا در صورت عدم امکان آن، nntpsend را در نظر بگیرید.

اطلاعات اشکال‌زدایی را روی خروجی خطای استاندارد چاپ می‌کند. این کار تراکنش‌های پروتکل میان innxbatch و کارگزار NNTP در میزبان راه‌دور را نمایش می‌دهد.
نام‌های پرونده‌های دسته‌ای را از ورودی استاندارد می‌خواند. به ازای هر دسته که با موفقیت منتقل شود، عبارت "OK" روی خروجی استاندارد چاپ می‌شود تا نشان دهد نام پروندهٔ دیگری مورد انتظار است.
مهلت زمانی (timeout) بر حسب ثانیه را برای مدت تلاش جهت برقراری اتصال مشخص می‌کند. در غیر این صورت، innxbatch به طور معمول تا زمان برقراری اتصال مسدود می‌شود.
کل مدت زمان مجاز (بر حسب ثانیه) برای انتقال مقاله‌ها را مشخص می‌کند.

حالت پیش‌فرض این است که برنامه تا زمان وقوع یک خطای ورودی/خروجی (I/O) یا انتقال کامل تمام مقاله‌ها منتظر بماند. اگر این پرچم استفاده شود، زمان درست پیش از آغاز انتقال هر مقاله بررسی می‌شود؛ این گزینه انتقالی را که هم‌اکنون در جریان است لغو نخواهد کرد.

هنگام خروج، innxbatch آمار انتقال و میزان استفاده از پردازنده (CPU) را از طریق syslog(3) گزارش می‌دهد. در صورت استفاده از این پرچم، این اطلاعات روی خروجی استاندارد نیز چاپ خواهند شد.

یک نمونه ورودی در پروندهٔ newsfeeds برای تولید پرونده‌های مناسب xbatch به صورت زیر است:

nase\
    :*\
    :Tc,Wnb\
    :<pathbin>/batcher -p "(<$COMPRESS in <pathlib>/innshellvars>\
        > <pathoutgoing>/nase.\$\$)" nase.do.main

یک اسکریپت نمونه برای فراخوانی innxbatch(8) به صورت زیر است:

#! /bin/sh
#  Send xbatches for a site, wrapped around innxbatch.
if [ $# -lt 3 ]
then
    echo "usage: $0 <sitename> <hostname> <xbatch file name> ..."
    exit 1
fi
. <pathlib>/innshellvars
site="$1"; host="$2"; shift; shift
ctlinnd flush "$site" \
&& sleep 5 \
&& exec ${NEWSBIN}/innxbatch -v -D "$host" $*

می‌توانید از sendxbatches که از قبل همراه با INN عرضه می‌شود و عملیات قفل‌گذاری را انجام می‌دهد، استفاده کنید. یک نمونه فراخوانی به صورت زیر است:

sendxbatches nase remote.news.server.name <pathoutgoing>/nase*

نوشته‌شده توسط Stefan Petri <petri@ibr.cs.tu-bs.de>، الگوبرداری‌شده از innxmit و وصلهٔ XBATCH برای پیاده‌سازی مرجع NNTP. مثال‌ها از Karsten Leipold <poldi@dfn.de>. بازنویسی در قالب POD توسط Julien Elie.

ctlinnd(8), incoming.conf(5), innxmit(8), newsfeeds(5), nntpsend(8), passwd.nntp(5), shlock(8).

2025-05-09 INN 2.7.4