| nbdsh(1) | LIBNBD | nbdsh(1) |
نام (NAME)
nbdsh - پوسته دستگاه بلوکی شبکه (NBD)
خلاصه دستور (SYNOPSIS)
$ nbdsh Welcome to nbdsh, the shell for interacting with Network Block Device (NBD) servers. The ‘nbd’ module has already been imported and there is an open NBD handle called ‘h’. nbd> h.connect_command(["nbdkit", "-s", "memory", "1G"]) nbd> h.get_size() 1073741824 nbd> buf = b"hello, world" nbd> h.pwrite(buf, 0) nbd> exit()
توضیحات (DESCRIPTION)
دستور nbdsh یک پوستهٔ تعاملی مبتنی بر Python برای دسترسی به سرورهای دستگاه بلوکی شبکه (NBD) است.
برای مطالعهٔ مستندات مربوط به رابط برنامهنویسی (API) libnbd لطفاً پوسته را باز کرده و تایپ کنید:
help(nbd)
برای آشنایی با نحوه استفاده از libnbd در Python به libnbd-python(3) مراجعه کنید.
مثالها (EXAMPLES)
اسکریپتهای نمونهٔ دیگری در مخزن کد منبع libnbd ذیل sh/examples یا در نشانی https://gitlab.com/nbdkit/libnbd/tree/master/sh/examples موجود است.
چاپ اندازه یک برونریزی NBD
گزینهٔ -u به یک شناسه NBD URI متصل میشود. گزینهٔ -c به شما اجازه میدهد دستورهای تکی Python را از طریق خط فرمان اجرا کنید. ترکیب این دو گزینه به شما امکان میدهد اندازهٔ یک برونریزی (export) NBD را بر حسب بایت چاپ کنید:
$ nbdsh -u nbd://localhost -c 'print(h.get_size())' 1073741824
نمایش هگزادسیمال (hexdump) سکتور بوت یک برونریزی NBD
با استفاده از -c - میتوانید یک برنامهٔ کامل Python را به ورودی استاندارد nbdsh بفرستید:
nbdsh -c - <<'EOF'
from subprocess import *
h.connect_uri("nbd://localhost")
bootsect = h.pread(512, 0)
p = Popen("hexdump -C", shell=True, stdin=PIPE)
p.stdin.write(bootsect)
EOF
دستور nbddump(1) ابزار دیگری برای تولید خروجی hexdump از برونریزیهای NBD است.
بازنویسی بخشی از دیسک با یک الگو
بازنویسی ۲۰۴۸ بایت، با شروع از آفست ۱۰۲۴ (هگز 0x400)، با الگوی باینری تکرارشوندهٔ 01010101 10101010. (این عملیات مخرب است!)
$ nbdkit memory 4096 $ nbdsh -u nbd://localhost -c 'h.pwrite(b"\x55\xAA" * 1024, 0x400)' $ nbddump nbd://localhost 0000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │················│ ☆ 0400: 55 aa 55 aa 55 aa 55 aa 55 aa 55 aa 55 aa 55 aa │U·U·U·U·U·U·U·U·│ ☆ 0c00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │················│ ☆ 0ff0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │················│ $ killall nbdkit
پارامتر -c شامل یک عبارت Python است که یک bytearray حاوی الگوی دو بایتی را ۱۰۲۴ بار تکرار میکند (با طول ۲۰۴۸ بایت)، و بایندینگ پایتونِ nbd_pwrite(3) را فراخوانی میکند. پارامتر دوم آفستی است که نوشتن از آن شروع میشود. برای کسب اطلاعات دربارهٔ nbdkit، به nbdkit(1) و nbdkit-memory-plugin(1) مراجعه کنید.
گزینهها (OPTIONS)
- -h
- --help
- نمایش راهنمای مختصر خط فرمان و خروج.
- --base-allocation
- درخواست استفاده از بافت فراگیر (meta context) با نام "base:allocation"، که رایجترین بافت مورد استفاده همراه با nbd_block_status_64(3) است. این معادل فراخوانی "h.set_meta_context(nbd.CONTEXT_BASE_ALLOCATION)" در پوسته پیش از اتصال است، و حتی هنگام ترکیب با "--uri" نیز کار میکند (در حالی که تلاش برای انجام این کار با "-c" بسیار دیر خواهد بود).
- -c 'COMMAND ...'
- --command 'COMMAND ...'
- بهجای راهاندازی یک پوستهٔ تعاملی، یک دستور را اجرا میکند. این گزینه میتواند چندین بار مشخص شود تا چندین دستور اجرا شوند.
- -c -
- --command -
- خواندن ورودی استاندارد و اجرای آن به عنوان یک دستور.
- -n
- هندل ضمنی "h" را ایجاد نمیکند.
- --opt-mode
- درخواست فعالسازی حالتِ گزینه (option mode)، که کنترلی دقیق بر مذاکرهٔ گزینهها (option negotiation) پس از برقراری ارتباط اولیه با سرور اما پیش از استفادهٔ واقعی از export فراهم میکند. این معادل فراخوانی "h.set_opt_mode(True)" در پوسته پیش از اتصال است، و حتی هنگام ترکیب با "--uri" نیز کار میکند (در حالی که تلاش برای انجام این کار با "-c" بسیار دیر خواهد بود).
- -u URI
- --uri URI
- اتصال به URI
مشخصشدهٔ
NBD. این معادل
دستور
"h.connect_uri(URI)" در
پوسته است.
توجه داشته باشید که اتصال پیش از پردازش هرگونه دستور "-c" برقرار میشود، که از استفاده از دستورهای پیکربندی مانند "h.add_meta_context("NAME")" از طریق خط فرمان هنگام ترکیب با این گزینه جلوگیری میکند. گزینههای "--opt-mode" و "--base-allocation" میتوانند برای مدیریت سادهتر این وضعیت به کار روند.
- -v
- --verbose
- فعالسازی پیامهای پرگویی libnbd. این گزینه اثری یکسان با تنظیم متغیر محیطی "LIBNBD_DEBUG=1" دارد.
- -V
- --version
- نمایش نام بسته و نسخه و خروج.
همچنین ببینید (SEE ALSO)
libnbd(3), libnbd-python(3), libnbd-security(3), nbdcopy(1), nbddiscard(1), nbddump(1), nbdfuse(1), nbdinfo(1), nbdublk(1), nbdzero(1), qemu-img(1), nbdkit(1).
نویسندگان (AUTHORS)
Richard W.M. Jones
کپیرایت و تکثیر (COPYRIGHT)
Copyright Red Hat
مجوز (LICENSE)
این کتابخانه یک نرمافزار آزاد است؛ شما میتوانید آن را تحت شرایط مجوز عمومی همگانی کمتر گنو (GNU Lesser General Public License) همانگونه که توسط بنیاد نرمافزارهای آزاد منتشر شده است، چه نسخهٔ ۲ مجوز یا (به انتخاب خودتان) هر نسخهٔ بالاتر بعدی بازتوزیع کرده و/یا تغییر دهید.
این کتابخانه به این امید توزیع شده است که مفید واقع شود، اما بدون هرگونه ضمانت؛ حتی بدون ضمانت ضمنی قابلیت فروش یا مناسب بودن برای یک هدف خاص. برای جزئیات بیشتر به مجوز عمومی همگانی کمتر گنو مراجعه کنید.
شما باید به همراه این کتابخانه یک نسخه از مجوز عمومی همگانی کمتر گنو را دریافت کرده باشید؛ در غیر این صورت، به بنیاد نرمافزارهای آزاد به آدرس زیر نامه بنویسید: Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
| 2026-07-16 | libnbd-1.24.3 |