netrc --- پردازش پرونده‌ی netrc

کد منبع: Lib/netrc.py


کلاس netrc قالب پرونده netrc را که برنامه‌ی ftp در یونیکس و دیگر کلاینت‌های FTP از آن استفاده می‌کنند، تجزیه و بسته‌بندی می‌کند.

class netrc.netrc([file])

یک نمونه از netrc یا نمونه‌ی زیرکلاس آن، داده‌های یک پرونده netrc را در بر می‌گیرد. آرگومان مقداردهی اولیه، در صورت وجود، پرونده‌ای را که باید تجزیه شود مشخص می‌کند. اگر آرگومانی داده نشود، پرونده .netrc در پوشه‌ی خانگی کاربر -- همان‌طور که os.path.expanduser() تعیین می‌کند -- خوانده خواهد شد. در غیر این صورت، استثنای FileNotFoundError پرتاب خواهد شد. خطاهای تجزیه، NetrcParseError را همراه با اطلاعات عیب‌یابی شامل نام پرونده، شماره خط و توکن خاتمه‌دهنده پرتاب خواهند کرد.

اگر در یک سیستم POSIX هیچ آرگومانی مشخص نشده باشد، وجود گذرواژه‌ها در پرونده .netrc، در صورتی که مالکیت یا مجوزهای پرونده ناامن باشند (پرونده متعلق به کاربری غیر از کاربری که فرآیند را اجرا می‌کند باشد، یا توسط هر کاربر دیگری قابل خواندن یا نوشتن باشد)، باعث پرتاب یک NetrcParseError خواهد شد. این، رفتار امنیتی معادل رفتار ftp و سایر برنامه‌هایی که از .netrc استفاده می‌کنند را پیاده‌سازی می‌کند. چنین بررسی‌های امنیتی در پلتفرم‌هایی که از os.getuid() پشتیبانی نمی‌کنند، در دسترس نیستند.

تغییر یافته در نسخه‌ی 3.4: بررسی مجوزهای POSIX افزوده شد.

تغییر یافته در نسخه‌ی 3.7: هنگامی که file به‌عنوان آرگومان ارسال نشده باشد، از os.path.expanduser() برای یافتن محل پرونده .netrc استفاده می‌شود.

تغییر یافته در نسخه‌ی 3.10: netrc پیش از استفاده از کدگذاری خاصِ locale، کدگذاری UTF-8 را آزمایش می‌کند. ورودی پرونده netrc دیگر نیازی نیست شامل همه توکن‌ها باشد. مقدار توکن‌های ناموجود به‌طور پیش‌فرض یک رشته خالی است. اکنون همه توکن‌ها و مقادیرشان می‌توانند شامل نویسه‌های دلخواه، مانند نویسه‌های فضای سفید و نویسه‌های غیر ASCII باشند. اگر نام کاربری anonymous باشد، بررسی امنیتی فعال نمی‌شود.

exception netrc.NetrcParseError

استثنایی که هنگام مواجهه با خطاهای سینتکسی در متن منبع، توسط کلاس netrc پرتاب می‌شود. نمونه‌های این استثنا سه ویژگی جالب ارائه می‌دهند:

msg

توضیح متنی خطا.

filename

نام پرونده منبع.

lineno

شماره‌ی سطری که خطا در آن یافت شد.

اشیاء netrc

نمونه‌ای از netrc دارای متدهای زیر است:

netrc.authenticators(host)

یک تاپل سه‌تایی (login, account, password) از اعتبارسنج‌های host برمی‌گرداند. اگر پرونده netrc حاوی ورودی‌ای برای میزبان داده‌شده نباشد، تاپل مرتبط با ورودی 'default' را برمی‌گرداند. اگر نه میزبان منطبق و نه ورودی 'default' در دسترس باشد، None را برمی‌گرداند.

netrc.__repr__()

داده‌های کلاس را به‌صورت رشته‌ای در قالب یک پرونده netrc برون‌ریزی میکند. (این کار کامنت‌هارا را حذف می‌کند و ممکن است ترتیب ورودی‌ها را تغییر دهد.)

نمونه‌های netrc دارای متغیرهای نمونه عمومی هستند:

netrc.hosts

دیکشنری که نام‌های میزبان را به تاپل‌های (login, account, password) نگاشت می‌کند. ورودی 'default'، در صورت وجود، به‌عنوان شبه‌میزبانی با همین نام نمایش داده می‌شود.

netrc.macros

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