AUGTOOL(1) Augeas AUGTOOL(1)

augtool - ابزار خط فرمان برای بازرسی و ویرایش فایلهای پیکربندی با Augeas

augtool [گزینه‌ها] [دستور]

ابزار Augeas یک ابزار ویرایش پیکربندی است. این ابزار فایل‌های پیکربندی را در قالب‌های اصلی خود تجزیه کرده و آن‌ها را به یک درخت (tree) تبدیل می‌کند. تغییرات پیکربندی با دستکاری این درخت و ذخیره مجدد آن در فایل‌های پیکربندی اصلی انجام می‌شوند.

ابزار augtool یک رابط خط فرمان برای درخت تولیدشده فراهم می‌کند. دستور می‌تواند یک دستور منفرد مطابق با بخش دستورات (COMMANDS) باشد. اگر بدون هیچ دستوری فراخوانی شود، دستورات را از ورودی استاندارد تا رسیدن به انتهای فایل (EOF) می‌خواند.

بررسی نوع (Typecheck) لنزها. این عمل می‌تواند بسیار زمان‌بر و کند باشد و بنابراین به‌طور پیش‌فرض انجام نمی‌شود، اما در طول توسعه به‌شدت توصیه می‌گردد.
هنگامی که فایل‌ها تغییر می‌کنند، نسخه‌های اصلی را در فایلی با پسوند '.augsave' نگهداری می‌کند.
ذخیره تغییرات در فایل‌هایی با پسوند '.augnew'، بدون آن‌که فایل‌های اصلی تغییر داده شوند.
استفاده از پوشه ROOT به‌عنوان ریشه فایل‌سیستم. بر ریشه‌ای که با متغیر محیطی AUGEAS_ROOT تنظیم شده باشد، اولویت دارد.
افزودن DIR به مسیر بارگذاری ماژول. این گزینه می‌تواند چندین بار مشخص شود. پوشه‌های تعیین‌شده در اینجا، پیش از هر پوشه مشخص‌شده در متغیر محیطی AUGEAS_LENS_LIB و پیش از پوشه‌های پیش‌فرض /usr/share/augeas/lenses و /usr/share/augeas/lenses/dist جستجو می‌شوند.
افزودن یک تبدیل (transform) فایل؛ از نحو دستور transform استفاده می‌کند، برای نمونه: -t 'Fstab incl /etc/fstab.bak'.
بارگذاری یک FILE منفرد درون درخت. لنز مورد استفاده به‌طور خودکار (بر اساس اطلاعات بارگذاری خودکار autoload در لنزها) تعیین می‌شود و همان لنزی خواهد بود که در زمان بارگذاری کل درخت برای این فایل استفاده می‌گردد. این گزینه می‌تواند چندین بار برای بارگذاری چندین فایل مشخص شود، مانند -l /etc/fstab -l /etc/hosts. این گزینه به‌طور ضمنی شامل --noload می‌شود، به طوری که فقط فایل‌های مشخص‌شده با این گزینه بارگذاری خواهند شد.
خواندن دستورات از FILE.
خواندن دستورات از ترمینال. هنگامی که با -f یا تغییر مسیر ورودی استاندارد (stdin) ترکیب شود، پس از اجرای دستورات موجود در فایل، وارد یک نشست تعاملی می‌شود.
هنگام خواندن دستورات از یک فایل از طریق ورودی استاندارد (stdin)، دستورات را پیش از چاپ خروجی آن‌ها بازتاب (echo) می‌دهد.
ذخیره خودکار تمامی تغییرات در پایان نشست.
عدم جستجو در هیچ‌یک از پوشه‌های پیش‌فرض برای یافتن ماژول‌ها. هنگامی که این گزینه تنظیم شود، تنها پوشه‌هایی که به‌صراحت با -I یا در متغیر محیطی AUGEAS_LENS_LIB مشخص شده‌اند برای یافتن ماژول‌ها جستجو خواهند شد.
عدم بارگذاری هیچ فایلی هنگام راه‌اندازی. این گزینه عموماً برای تنظیم دقیق این‌که کدام فایل‌ها بارگذاری شوند استفاده می‌شود، از طریق ویرایش مدخل‌های موجود در /augeas/load و سپس صدور دستور load.
هیچ ماژول لنزی و در نتیجه هیچ فایلی را هنگام راه‌اندازی بارگذاری نمی‌کند. این گزینه هیچ ورودی‌ای در /augeas/load ایجاد نمی‌کند؛ برای خواندن هر فایلی، باید آن‌ها را به‌صورت دستی تنظیم کرد و بارگذاری باید با دستور load آغاز شود. استفاده از این گزینه سریع‌ترین زمان راه‌اندازی را فراهم می‌کند.
بارگذاری موقعیت‌های بازه (span) برای گره‌ها در درخت نسبت به فایل اصلی. امکان استفاده از دستور span را برای بازیابی داده‌های موقعیت مکانی فعال می‌سازد.
پس از اجرای هر دستور، مدت زمان اجرای آن را بر حسب میلی‌ثانیه چاپ می‌کند. این قابلیت شناسایی پرس‌وجوهای کند (معمولاً از طریق دستورهای match) را آسان‌تر کرده و امکان بررسی پرس‌وجوهای جایگزینی که نتیجه مشابهی دارند اما ممکن است سریع‌تر باشند را فراهم می‌آورد.
چاپ اطلاعات نسخه و خروج. نسخه در درخت نیز در مسیر /augeas/version موجود است.

در حالت تعاملی، دستورات و مسیرها را می‌توان با فشردن کلید TAB تکمیل خودکار کرد.

مسیرهایی که به‌عنوان آرگومان توسط دستورات پذیرفته می‌شوند، از زیرمجموعه کوچکی از عبارات مسیر XPath استفاده می‌کنند. یک عبارت مسیر از تعدادی بخش تشکیل شده که با / از یکدیگر جدا می‌شوند. در هر بخش، نویسه * می‌تواند برای تطبیق با هر گره‌ای بدون در نظر گرفتن برچسب آن استفاده شود. گره‌های هم‌سطح (هم‌نیای) با برچسب‌های یکسان را می‌توان با افزودن [N] به برچسب آن‌ها برای تطبیق با N-امین هم‌نیا با آن برچسب متمایز کرد. آخرین هم‌نیا با برچسب مشخص را می‌توان با [last()] در دسترس داشت. برای نمونه‌هایی از این مورد، به بخش مثال‌ها (EXAMPLES) مراجعه کنید.

دستورات زیر رفتار Augeas و خود augtool را کنترل می‌کنند.

چاپ این متن راهنما
بارگذاری فایل‌ها بر اساس تبدیل‌های موجود در /augeas/load.
خروج از برنامه
تبدیل مجدد درخت در مسیر PATH به متن با استفاده از لنز LENS و ذخیره رشته حاصل در NODE_OUT. فرض می‌شود که درخت در ابتدا با همان لنز و رشته ذخیره‌شده در NODE_IN به‌عنوان ورودی خوانده شده بود.
ذخیره تمامی تغییرات معلق بر روی دیسک. مگر در حالتی که گزینه‌های خط فرمان -b یا -n مشخص شده باشند، فایل‌ها در جای خود بازنویسی و تغییر داده می‌شوند.
تجزیه NODE با استفاده از LENS و ذخیره درخت حاصل در PATH.
افزودن یک تبدیل برای FILE با استفاده از LENS. مقدار LENS می‌تواند نام یک ماژول یا نام کامل لنز باشد. اگر نام ماژول داده شود، مقدار lns به‌عنوان لنز در نظر گرفته خواهد شد. فیلتر FILTER باید incl یا excl باشد. اگر فیلتر incl باشد، فایل FILE توسط LENS تجزیه می‌شود. اگر فیلتر excl باشد، فایل FILE از LENS مستثنی خواهد شد. FILE می‌تواند شامل نویسه‌های عام (wildcards) باشد.
بارگذاری یک FILE خاص، با تعیین خودکار لنز مناسب از اطلاعات موجود در /augeas/load؛ بدون مداخله بیشتر، همان لنزی استفاده می‌شود که معمولاً برای این فایل به کار می‌رفت.

دستورات زیر برای بازیابی داده‌ها از درخت Augeas استفاده می‌شوند.

چاپ مدخل‌های موجود در درخت به‌صورت XML. اگر PATH مشخص شود، چاپ از آنجا آغاز می‌شود؛ در غیر این صورت کل درخت چاپ خواهد شد.
چاپ مقدار مرتبط با PATH
دریافت و چاپ برچسب مرتبط با PATH
فهرست کردن فرزندان مستقیم PATH
یافتن تمامی مسیرهایی که با PATTERN مطابقت دارند. اگر VALUE مشخص شده باشد، فقط مسیرهای منطبقی که مقدار آن‌ها برابر با VALUE است چاپ می‌شوند.
چاپ مدخل‌های موجود در درخت. اگر PATH مشخص شود، چاپ از آنجا آغاز می‌گردد؛ در غیر این صورت کل درخت چاپ خواهد شد.
چاپ نام فایلی که گره PATH از آن تولید شده است، به همراه اطلاعات مربوط به موقعیت‌های موجود در فایل که متناظر با برچسب، مقدار و کل گره هستند. PATH باید دقیقاً با یک گره مطابقت داشته باشد.

برای فعال‌سازی ثبت اطلاعات بازه (span)، لازم است پیش از بارگذاری فایل‌ها دستور 'set /augeas/span enable' را اجرا کنید. این ویژگی به‌طور پیش‌فرض غیرفعال است.

دستورات زیر برای تغییر دادن درخت Augeas استفاده می‌شوند.

تنظیم مقدار PATH به NULL. اگر PATH هنوز در درخت وجود نداشته باشد، این مسیر و تمام نیاکان آن ایجاد خواهند شد.
پاک کردن مقادیر چندین گره در یک عملیات. یافتن یا ایجاد گره منطبق با SUB از طریق تفسیر SUB به‌عنوان عبارت مسیر نسبی نسبت به هر گره منطبق با BASE. اگر SUB برابر با '.' باشد، گره‌های منطبق با BASE تغییر داده خواهند شد.
درج یک گره جدید با برچسب LABEL دقیقاً قبل یا بعد از PATH درون درخت. WHERE باید before یا after باشد.
نام مستعار برای ins.
انتقال گره SRC به DST. مسیر SRC باید دقیقاً با یک گره در درخت مطابقت داشته باشد. DST باید یا دقیقاً با یک گره در درخت مطابقت داشته باشد، یا هنوز وجود نداشته باشد. اگر DST از قبل وجود داشته باشد، آن گره و تمامی نوادگان آن حذف می‌شوند. اگر DST هنوز وجود نداشته باشد، خود آن و تمام نیاکان مفقود آن ایجاد خواهند شد.
نام مستعار برای mv.
کپی کردن گره SRC به DST. مسیر SRC باید دقیقاً با یک گره در درخت مطابقت داشته باشد. DST باید یا دقیقاً با یک گره در درخت مطابقت داشته باشد، یا هنوز وجود نداشته باشد. اگر DST از قبل وجود داشته باشد، آن گره و تمامی نوادگان آن حذف می‌شوند. اگر DST هنوز وجود نداشته باشد، خود آن و تمام نیاکان مفقود آن ایجاد خواهند شد.
نام مستعار برای cp.
تغییر نام برچسب تمامی گره‌های منطبق با SRC به LBL.
حذف PATH و تمام فرزندان آن از درخت.
انتساب مقدار VALUE به PATH. اگر PATH هنوز در درخت نباشد، آن و تمامی نیاکانش ایجاد خواهند شد.
تنظیم چندین گره در یک عملیات. یافتن یا ایجاد یک گره منطبق با SUB از طریق تفسیر SUB به‌عنوان عبارت مسیر نسبی به هر گره منطبق با BASE. اگر SUB برابر با '.' باشد، گره‌های منطبق با BASE تغییر خواهند کرد.
ایجاد PATH با مقدار NULL در صورتی که هنوز در درخت نباشد. تمام نیاکان آن نیز ایجاد خواهند شد. این مدخل‌های جدید درخت در آخرین جایگاه میان هم‌نیاهای خود ظاهر خواهند شد.

دستورات زیر هنگام کار با عبارات مسیر کمک می‌کنند.

تعریف متغیر NAME به نتیجه ارزیابی EXPR، که باید یک مجموعه گره (nodeset) باشد. اگر هنوز هیچ گره‌ای منطبق با EXPR وجود نداشته باشد، یکی ایجاد می‌شود و NAME به آن اشاره خواهد کرد. اگر VALUE داده شود، این معادل 'set EXPR VALUE' خواهد بود؛ اگر VALUE داده نشود، گره همانند دستور 'clear EXPR' ایجاد شده و NAME به آن گره اشاره خواهد کرد.
تعریف متغیر NAME به نتیجه ارزیابی EXPR. این متغیر می‌تواند در عبارات مسیر به‌صورت $NAME استفاده شود. توجه داشته باشید که EXPR هنگام تعریف متغیر ارزیابی می‌شود، نه در زمان استفاده از آن.

ریشه سیستم فایل، پیش‌فرض '/'. می‌تواند با گزینه خط فرمان -r نادیده گرفته و بازتعریف شود.
فهرستی از پوشه‌های حاوی لنزها که با دونقطه (:) از هم جدا شده‌اند. پوشه‌های مشخص‌شده در اینجا، پس از پوشه‌های تنظیم‌شده با گزینه خط فرمان -I اما پیش از پوشه‌های پیش‌فرض /usr/share/augeas/lenses و /usr/share/augeas/lenses/dist جستجو می‌شوند.

در حالت عادی، وضعیت خروج 0 است. اگر یک یا چند دستور با شکست مواجه شوند، وضعیت خروج به مقداری غیر صفر تنظیم می‌شود.

با این حال توجه داشته باشید که شکست در بارگذاری برخی از فایل‌های مشخص‌شده توسط تبدیل‌ها در /augeas/load به‌عنوان شکست در نظر گرفته نمی‌شود. اگر مهم است بدانید که آیا تمامی فایل‌ها بارگذاری شده‌اند یا خیر، لازم است پس از بارگذاری دستور match /augeas//error را اجرا کنید تا جزئیات مربوط به فایل‌هایی که بارگذاری نشده‌اند و دلیل آن را بیابید.

# حالت خط فرمان
augtool print /files/etc/hosts/
# حالت تعاملی
augtool
augtool> help
augtool> print /files/etc/hosts/
# چاپ سومین مدخل از دومین خط AcceptEnv
augtool print '/files/etc/ssh/sshd_config/AcceptEnv[2]/3'
# یافتن مدخل موجود در inittab با کنش 'initdefault'
augtool> match /files/etc/inittab/*/action initdefault
# چاپ آخرین نام مستعار برای هر مدخل در /etc/hosts
augtool> print /files/etc/hosts/*/alias[last()]

تعاریف لنزها و طرح‌واره‌ها در /usr/share/augeas/lenses و /usr/share/augeas/lenses/dist

David Lutterkort <lutter@watzmann.net>

حق نشر © 2007-2016 David Lutterkort

نرم‌افزار Augeas (و augtool) تحت مجوز عمومی کمتر جامع گنو (LGPL) منتشر شده‌اند.

صفحه خانگی پروژه Augeas http://www.augeas.net

عبارات مسیر Augeas https://github.com/hercules-team/augeas/wiki/Path-expressions

augparse(1), augprint(1)

2022-10-24 Augeas 1.13.0