. \" @(#)rscsi.1 1.5 09/11/15 Copyr 2000-2008 J. Schilling . \" Manual Seite fuer rscsi . \" .if t .ds a \v'-0.55m'\h'0.00n'\z.\h'0.40n'\z.\v'0.55m'\h'-0.40n'a .if t .ds o \v'-0.55m'\h'0.00n'\z.\h'0.45n'\z.\v'0.55m'\h'-0.45n'o .if t .ds u \v'-0.55m'\h'0.00n'\z.\h'0.40n'\z.\v'0.55m'\h'-0.40n'u .if t .ds A \v'-0.77m'\h'0.25n'\z.\h'0.45n'\z.\v'0.77m'\h'-0.70n'A .if t .ds O \v'-0.77m'\h'0.25n'\z.\h'0.45n'\z.\v'0.77m'\h'-0.70n'O .if t .ds U \v'-0.77m'\h'0.30n'\z.\h'0.45n'\z.\v'0.77m'\h'-0.75n'U .if t .ds s \\(*b .if t .ds S SS .if n .ds a ae .if n .ds o oe .if n .ds u ue .if n .ds s sz .TH RSCSI 1 "Release 3.0" "J\*org Schilling" "Schily\'s USER COMMANDS" .SH "نام (NAME)" rscsi \- سرور پروتکل انتقال عمومی SCSI از راه دور .SH "خلاصه دستور (SYNOPSIS)" .B /opt/schily/sbin/rscsi .SH "توضیحات (DESCRIPTION)" .IX "rscsi command" "" "\fLrscsi\fP \(em remote generic SCSI transport protocol server" .IX "remote generic SCSI transport protocol server" "" "remote generic SCSI transport protocol server \(em \fLrscsi\fP" دستور .B rscsi یک برنامه سرور انتقال عمومی SCSI از راه دور است. .B rscsi برنامه‌ای است که به صورت محلی روی ماشینی که دارای دستگاه‌های SCSI است اجرا می‌شود و توسط برنامه‌های راه دور مانند .BR cdrecord (1)، .BR cdda2wav (1)، .BR readcd (1) و .BR sformat (1) استفاده می‌شود که می‌خواهند از طریق یک اتصال ارتباط بین‌پردازشی به واسطه .BR libscg به دستگاه‌های SCSI دسترسی داشته باشند. .B rscsi معمولاً با یک فراخوانی .BR rexec (3) یا .BR rcmd (3) راه‌اندازی می‌شود، اما می‌تواند از طریق یک پایپ داخلی به یک نشست .BR ssh (1) که توسط کاربر راه دور ایجاد شده است نیز متصل شود. .LP برنامه .B rscsi درخواست‌های .BR scg_open ، .BR scg_close ، .B scg_cmd و درخواست‌های مشابه را که همگی مربوط به رابط .BR libscg هستند، می‌پذیرد. .B rscsi دستورات را اجرا کرده و سپس با یک نشانگر وضعیت پاسخ می‌دهد. .LP برنامه .B rscsi آماده است تا به عنوان یک .B پوسته کاربری در فایل passwd نصب شود تا ورودها و بررسی‌های امنیتی ویژه SCSI از راه دور را ایجاد کند. .LP تمام درخواست‌ها با فرمت .SM ASCII به برنامه .B rscsi ارسال می‌شوند و بنابراین مستقل از ترتیب بایت و نوع ماشین هستند. .LP تمام پاسخ‌ها با فرمت .SM ASCII و در یکی از دو قالب زیر بازگردانده می‌شوند. .LP تمامی دستورات موفق (به جز دستور "S" که دستورات SCSI را ارسال می‌کند) پاسخی به شکل زیر دارند: .IP .BI A number\en .LP که در آن .I number نمایش .SM ASCII یک عدد ده‌دهی است که معمولاً کد بازگشتی فراخوانی سیستم یا تابع مربوطه است. .sp تمامی دستورات ناموفق با قالبی به شکل زیر پاسخ داده می‌شوند: .IP .BI E error-number \en error-message \en xerror-len\fB\en\fIxerror-txt .LP که در آن .I error-number یکی از شماره‌های خطای ممکن شرح داده شده در .BR intro (2) است، .I error-message رشته خطای مربوطه است که توسط .BR strerror (3) دریافت شده است، .I xerror-len طول متن خطای اضافی .I xerror-txt است و می‌تواند ۰ باشد. در صورتی که .I xerror-len برابر ۰ باشد، هیچ .I xerror-txt ارسال نمی‌شود. توجه داشته باشید که یک دستور SCSI ناموفق که داده حسگری (sense data) مربوط به SCSI را بازگردانده است، به عنوان یک دستور موفق شمرده می‌شود و از قالب خطای پیش‌فرض استفاده نمی‌کند. .LP .ne 15 پروتکل .B rscsi دستورات زیر را پیاده‌سازی می‌کند: .RS .br .ne 7 .TP 12 .BI V what \en نسخه ( .BR version ) چندین نمونه از نرم‌افزار را در سرور .B rscsi بازمی‌گرداند. پارامتر .B what می‌تواند مقادیر زیر را داشته باشد: .RS .TP .B 0 مقدار .B SCG_VERSION را از .B libscg روی سرور .B rscsi بازمی‌گرداند. این مقدار، رشته نسخه لایه تطبیق انتقال SCSI سطح پایین را برمی‌گرداند. .TP .B 1 مقدار .B SCG_AUTHOR را از .B libscg روی سرور .B rscsi بازمی‌گرداند. این مقدار، نام نویسنده لایه تطبیق انتقال SCSI سطح پایین را برمی‌گرداند. .TP .B 2 مقدار .B SCG_SCCS_ID را از .B libscg روی سرور .B rscsi بازمی‌گرداند. این مقدار، رشته نسخه SCCS لایه تطبیق انتقال SCSI سطح پایین را برمی‌گرداند. .TP .B 20 مقدار .B SCG_KVERSION را از .B libscg روی سرور .B rscsi بازمی‌گرداند. این مقدار، نسخه نمونه کرنل درایوری را که زیر لایه تطبیق انتقال SCSI سطح پایین قرار دارد بازمی‌گرداند. .sp این فراخوانی ممکن است در تمام سیستم‌های عامل پشتیبانی نشود. .PP .sp این دستور متناظر با تابع .BR scg_version (3) از .BR libscg است. .RE .br .ne 7 .TP .BI O device \en دستگاه SCSI مشخص‌شده را با نام .IR device باز می‌کند. .sp برای اطلاعات بیشتر درباره مقادیر ممکن پارامتر .IR device ، توضیحات مربوط به گزینه .B dev= در .BR cdrecord (1) را ببینید. .sp اگر دستگاهی از قبل باز باشد، پیش از اجرای بازگشایی جدید بسته می‌شود. .sp این دستور متناظر با تابع .BR scg_open (3) از .BR libscg است. .sp مقدار بازگشتی در صورت موفقیت 0 است. .br .ne 7 .TP .BI C device \en دستگاه یا فایل جاریِ باز را می‌بندد. آرگومان .I device نادیده گرفته می‌شود. .sp این دستور متناظر با تابع .BR scg_close (3) از .BR libscg است. .sp مقدار بازگشتی، مقدار بازگشتی از تابع .BR scg_close (3) است. .br .ne 7 .TP .BI D size \en حداکثر اندازه DMA را برای دستگاه SCSI جاریِ باز تنظیم می‌کند. پارامتر .I size اندازه مورد نظر DMA به بایت است. .sp این دستور متناظر با تابع .BR scg_bufsize (3) از .BR libscg است. .sp مقدار بازگردانده‌شده، اندازه واقعی DMA است که توانسته تنظیم شود. این مقدار ممکن است کمتر از پارامتر .I size باشد. .br .ne 7 .TP .BI M size \en یک بافر مناسب برای انتقال‌های SCSI DMA تخصیص می‌دهد. .sp این دستور متناظر با تابع .BR scg_getbuf (3) از .BR libscg است. .sp مقدار بازگردانده‌شده، اندازه واقعی DMA است که توانسته تنظیم شود. این مقدار ممکن است کمتر از پارامتر .I size باشد. .br .ne 7 .TP .B F\en بافری را که قبلاً تخصیص داده شده آزاد می‌کند. .sp این دستور متناظر با تابع .BR scg_freebuf (3) از .BR libscg است. .sp مقدار بازگشتی در صورت موفقیت 0 است. .br .ne 7 .TP .B N\en حداکثر مقدار مجاز برای شماره گذرگاه SCSI را دریافت می‌کند. .sp این دستور متناظر با تابع .BR scg_numbus (3) از .BR libscg است. .sp مقدار بازگشتی، مقدار بازگشتی از تابع .BR scg_numbus (3) است. .br .ne 7 .TP .BI B busno \en chan \en بررسی می‌کند که آیا گذرگاه SCSI با شماره گذرگاهی برابر با .I busno وجود دارد یا خیر. پارامتر .I chan در حال حاضر نادیده گرفته می‌شود. .sp این دستور متناظر با تابع .BR scg_havebus (3) از .BR libscg است. .sp مقدار بازگشتی، مقدار بازگشتی از تابع .BR scg_havebus (3) است. .br .ne 7 .TP .BI T busno \en chan \en target\fB\en\fIlun\fB\en آدرس هدف SCSI را به .IR busno "، " target "، " lun تنظیم می‌کند. پارامتر .I chan در حال حاضر نادیده گرفته می‌شود. .sp این دستور متناظر با تابع .BR scg_settarget (3) از .BR libscg است. .sp مقدار بازگشتی، مقدار بازگشتی از تابع .BR scg_havebus (3) است. .br .ne 7 .TP .B I\en شناسه آغازگر (initiator ID) مربوط به SCSI را برای گذرگاه SCSI جاری دریافت می‌کند. .sp این دستور متناظر با تابع .BR scg_initiator_id (3) از .BR libscg است. .sp مقدار بازگشتی، مقدار بازگشتی از تابع .BR scg_initiator_id (3) است. .br .ne 7 .TP .B A\en بررسی می‌کند که آیا هدف جاری یک دستگاه ATAPI هست یا می‌تواند باشد. .sp این دستور متناظر با تابع .BR scg_isatapi (3) از .BR libscg است. .sp مقدار بازگشتی، مقدار بازگشتی از تابع .BR scg_isatapi (3) است. .br .ne 7 .TP .BI R what \en یک بازنشانی در SCSI انجام می‌دهد. پارامتر .I what می‌تواند مقادیر زیر را داشته باشد: .RS .TP 0 آزمایش می‌کند که آیا بازنشانی SCSI پشتیبانی می‌شود یا خیر، مانند پارامتر .BR SCG_RESET_NOP . .TP 1 یک بازنشانی هدف SCSI انجام می‌دهد، مانند پارامتر .BR SCG_RESET_TGT . .TP 2 یک بازنشانی گذرگاه SCSI انجام می‌دهد، مانند پارامتر .BR SCG_RESET_BUS . .PP .sp این دستور متناظر با تابع .BR scg_reset (3) از .BR libscg است. .sp مقدار بازگشتی، مقدار بازگشتی از تابع .BR scg_reset (3) است. .RE .br .ne 7 .TP .BI S count \en flags \en\fIcdb_len\fB\en\fIsense_len\fB\en\fItimeout\fB\en یک دستور SCSI را به هدف انتخاب‌شده جاری ارسال می‌کند. این دستور پارامترهای زیر را می‌گیرد: .RS .TP .B count تعداد DMA برای این دستور. اگر دستور از نوعی باشد که داده را به هدف منتقل می‌کند، داده مربوطه مستقیماً پس از بلوک توصیف‌گر دستور SCSI که در بالا شرح داده شد ارسال می‌شود. .TP .B flags فلگ‌هایی که برای این دستور SCSI اعمال می‌شوند: .RS .TP .B 1 به کرنل اطلاع می‌دهد که دستور SCSI داده‌ها را از هدف به میزبان منتقل خواهد کرد. این متناظر با مقدار فلگ .B SCG_RECV_DATA است. .TP .B 2 به کرنل اطلاع می‌دهد که دستور SCSI را با قطع/وصل مجدد فعال ارسال کند. این متناظر با مقدار فلگ .B SCG_DISRE_ENA است. این فلگ در تمام بسترها پشتیبانی نمی‌شود. .TP .B 4 کرنل را در صورت بروز خطاهای SCSI بی‌صدا می‌کند. این متناظر با مقدار فلگ .B SCG_SILENT است. این فلگ در تمام بسترها پشتیبانی نمی‌شود. .TP .B 8 به کرنل اطلاع می‌دهد در صورت بروز خطای انتقال SCSI قابل تلاش مجدد، دستور SCSI را دوباره امتحان کند. این متناظر با مقدار فلگ .B SCG_CMD_RETRY است. این فلگ در تمام بسترها پشتیبانی نمی‌شود. .TP .B 16 به کرنل اطلاع می‌دهد که دستور SCSI را با برابری (parity) غیرفعال ارسال کند. این متناظر با مقدار فلگ .B SCG_NOPARITY است. این فلگ در تمام بسترها پشتیبانی نمی‌شود. .RE .TP .B cdb_len طول توصیف‌گر دستور SCSI برای این دستور. توصیف‌گر دستور SCSI باید با طول صحیح، مستقیماً پس از خط جدید بعد از مقدار .B timeout ارسال شود. .TP .B sense_len میزان داده حسگری (sense data) که در بازگشت یک دستور SCSI ناموفق که داده حسگری تولید می‌کند، مورد انتظار است. .TP .B timeout مهلت زمانی (timeout) برای دستور SCSI به ثانیه. کسرهایی از ثانیه را می‌توان با ارسال یک عدد اعشاری مشخص کرد. .PP پاسخ برای دستور SCSI که توانسته به هدف ارسال شود، عبارت است از: .sp .BI A count \en error \en\fIerrno\fB\en\fIscb\fB\en\fIsense_count\fB\en .TP .B count تعداد DMA برای هرگونه داده بازگردانده‌شده از هدف. اگر این تعداد غیرصفر باشد، داده‌ها مستقیماً پس از بلوک پاسخ ذکرشده در بالا پس فرستاده می‌شوند. .TP .B error طبقه‌بندی خطای SCSI از یکی از مقادیر زیر: .RS .sp .ne 3 .TP .B 0 هیچ خطایی رخ نداده است. این مقدار متناظر با مقدار .B SCG_NO_ERROR است. .sp .ne 3 .TP .B 1 هنگام تلاش برای انتقال دستور SCSI به هدف، خطایی قابل تلاش مجدد رخ داده است. این مقدار متناظر با مقدار .B SCG_RETRYABLE است. .sp .ne 3 .TP .B 2 هنگام تلاش برای انتقال دستور SCSI به هدف، یک خطای مهلک رخ داده است. این مقدار متناظر با مقدار .B SCG_FATAL است. .sp .ne 3 .TP .B 3 مهلت زمانی در SCSI به پایان رسیده است. این مقدار متناظر با مقدار .B SCG_TIMEOUT است. .RE .sp .ne 3 .TP .B errno هر مقدار ممکن .B "errno یونیکس" برای دستور SCSI. .sp .ne 3 .TP .B scb بایت وضعیت مربوط به SCSI. .sp .ne 3 .TP .B sense_count تعداد حسگری بازگردانده‌شده برای دستور SCSI. داده‌های حسگری SCSI مستقیماً پس از هر داده SCSI DMA احتمالیِ دریافت‌شده از هدف بازگردانده می‌شوند. .sp این دستور متناظر با تابع .BR scg_cmd (3) از .BR libscg است. .sp مقدار بازگشتی، مقدار بازگشتی از تابع .BR scg_cmd (3) است. .RE .RE .LP هر دستور دیگری باعث خروج .B rscsi می‌شود. .SH "فایل‌ها (FILES)" .TP /etc/default/rscsi مقادیر پیش‌فرض برای گزینه‌های زیر را می‌توان در فایل /etc/default/rscsi تنظیم کرد. برای نمونه: .sp .BR DEBUG= /tmp/rscsi.debug .br .BR USER= rscsi .br .BR ACCESS= "rscsi myhost.mydomain.org 1 -1 3 0" .sp تمامی کلیدواژه‌ها باید در ابتدای خط قرار گیرند. .RS .TP .B DEBUG اگر مایل به دریافت اطلاعات اشکال‌زدایی هستید، این مورد را روی نام فایلی تنظیم کنید که .B rscsi باید اطلاعات اشکال‌زدایی را در آن قرار دهد. .TP .B USER نام کاربری (محلی در سرور RSCSI) که مجاز است از سرویس‌های سرور .B rscsi استفاده کند. امکان درج بیش از یک خط .BI USER= name وجود دارد. یک خط به شکل .BR USER= * به تمامی کاربران دسترسی می‌دهد. .TP .B ACCESS این کلیدواژه با شش پارامتر که با TAB از هم جدا شده‌اند دنبال می‌شود. نام ( .BR name ) کاربری (محلی در میزبان سرور RSCSI) که مجاز به استفاده از سرویس‌های سرور .B rscsi است، به دنبال .B "نام میزبانی" که عملیات از آن مجاز دانسته شده، به دنبال مشخصات .B "دستگاه SCSI" که از .BR bus-number ، .BR channel " (در حال حاضر نادیده گرفته می‌شود)" ، .B target-id و .B lun تشکیل شده است که دستگاه SCSI را که در صورت تطابق این خط .B ACCESS قابل دسترسی است، مشخص می‌کند. اگر یک یا چند ورودی از مشخصات .BR bus-number ، .BR channel ، .B target-id یا .B lun برابر -1 تنظیم شود، با هر مقدار ممکنی برای بخش مربوطه از مشخصات دستگاه SCSI تطابق پیدا می‌کند. امکان درج بیش از یک خط .BI ACCESS= "name host SCSI-device" وجود دارد. .sp اگر ورودی استاندارد .B rscsi یک سوکت از یک میزبان راه دور نباشد، .B rscsi مقدار .B "ورودی میزبان" را از .B /etc/default/rscsi با رشته‌های زیر مقایسه می‌کند: .RS .TP 10 .B PIPE اگر .B stdin یک پایپ .SM UNIX باشد. .sp اگر می‌خواهید اتصال‌های راه دور را که از پروتکل .B ssh استفاده می‌کنند مجاز کنید، باید از کلمه .B PIPE به جای نام میزبان واقعی در خط تطبیق‌یابنده .B ACCESS= استفاده کنید. .TP .B ILLEGAL_SOCKET اگر .B getpeername() برای .B stdin کار نکند. .TP .B NOT_IP اگر .B getpeername() برای .B stdin کار کند اما به یک سوکت اینترنتی متصل نباشد. .RE .RE .SH "همچنین ببینید (SEE ALSO)" .BR cdrecord (1), .BR cdda2wav (1), .BR readcd (1), .BR sformat (1), .BR ssh (1), .BR intro (2), .BR open (2), .BR close (2), .BR read (2), .BR write (2), .BR ioctl (2), .BR getpeername (3), .BR rcmd (3), .BR rexec (3), .BR strerror (3) .SH "عیب‌یابی (DIAGNOSTICS)" تمامی پاسخ‌ها به اتصال شبکه ارسال می‌شوند. آن‌ها از قالبی که در بالا شرح داده شد استفاده می‌کنند. .SH "نکات (NOTES)" .LP امکان ایجاد فایل اشکال‌زدایی با فراخوانی .BI rscsi " file" به دلایل امنیتی غیرفعال شده است. اگر مایل به اشکال‌زدایی .B rscsi هستید، فایل .B /etc/default/rscsi را ویرایش کرده و یک ورودی .B DEBUG در آن درج نمایید. .SH "اشکالات (BUGS)" .LP هیچ موردی شناخته نشده است. .SH "تاریخچه (HISTORY)" .LP دستور .B rscsi توسط J\*org Schilling در ژوئن ۲۰۰۰ توسعه یافته است. .SH "نویسنده (AUTHOR)" .nf J\*org Schilling Seestr. 110 D-13353 Berlin Germany .fi .PP گزارش اشکالات و پیشنهادات را به نشانی‌های زیر ارسال کنید: .PP .B joerg.schilling@fokus.fraunhofer.de یا .B js@cs.tu-berlin.de یا .B joerg@schily.isdn.cs.tu-berlin.de .br .ne 7 .SH "پایداری رابط (INTERFACE STABILITY)" رابط‌های ارائه‌شده توسط .B rscsi برای پایداری بلندمدت طراحی شده‌اند. از آنجا که .B rscsi به رابط‌های ارائه‌شده توسط سیستم‌عامل زیربنایی وابسته است، پایداری رابط‌های ارائه‌شده توسط .B rscsi به پایداری رابط‌های سیستم‌عامل بستگی دارد. رابط‌های تغییریافته در سیستم‌عامل ممکن است رابط‌های تغییریافته را در .B rscsi الزام کنند.