وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

روش تولید رشته تصادفی در Bash

0 3
زمان لازم برای مطالعه: 2 دقیقه


یک رشته تصادفی نشان دهنده یک سری کاراکترهای الفبایی است که هیچ الگوی خاصی ندارند. اگرچه هیچ رشته تصادفی مطلقی وجود ندارد زیرا تولید آنها از منطق ریاضی استفاده می کند، رشته های تصادفی می توانند منحصر به فرد باشند.

در این آموزش، راه‌های مختلفی را که می‌توانیم رشته‌های تصادفی تولید کنیم، بررسی خواهیم کرد bash. این قابلیت می تواند هنگام ایجاد نام کاربری، رمز عبور یا داده های اولیه مفید باشد.

روش 1: md5 هش

اولین روشی که می توانیم برای تولید یک رشته تصادفی در آن استفاده کنیم bash md5 چک جمع است. Bash دارای متغیر $RANDOM است که یک عدد تصادفی تولید می کند. می توانیم این مقدار را به md5sum لوله کنیم تا یک رشته تصادفی بدست آوریم.

برای نشان دادن:

echo $تصادفی | md5sum | head -c 20; echo;
996e405cb0cdd2e10299

متغیر $RANDOM همیشه تصادفی است. در نتیجه، md5 checksum تولید شده همیشه تصادفی است.

روش تولید رشته تصادفی در Bash

روش 2: UUID

همچنین می توانید از مولد UUID کرنل در /proc/sys/kernel/random/uuid استفاده کنید. این به شما یک مقدار هگزادسیمال منحصر به فرد را می دهد که می توانید با استفاده از دستور sed و head آن را به یک رشته تصادفی تبدیل کنید:

مثلا:

cat /proc/sys/kernel/random/uuid | sed’s/[-]//g’ | head -c 20; echo;
c23174ce6fa149498fc7

روش 3: دستگاه های شبه

این جمله را شنیده اید که “همه چیز در لینوکس یک فایل است.” یکی از مفاهیمی که این عبارت را درست می کند، توانایی بیان دستگاه ها به صورت فایل است.

پیشنهاد می‌کنیم بخوانید:  روش تغییر نام دسته ای از فایل ها در لینوکس

فایل‌های واقع در /dev به عنوان دستگاه‌های شبه شناخته می‌شوند. آنها به عنوان پل بین هسته و سخت افزار عمل می کنند. یکی از فایل های این دایرکتوری فایل uradom است.

فایل urandom یک رابط برای دسترسی به مولد اعداد تصادفی هسته فراهم می کند. بنابراین، می توانیم از آن برای تولید یک رشته تصادفی همانطور که در زیر نشان داده شده است استفاده کنیم:

cat /dev/urandom | tr-dc'[:alpha:]’ | fold -w ${1:-20} | head -n 1
qGswsbBusuztUEKXhiHu

خروجی urandom را به tr لوله می کنیم، که مقادیر الفبای عددی تولید می کند و سپس مقادیر را به عرض حداکثر 20 کاراکتر تا می کنیم. در نهایت یک رشته خط دار با head -n بدست می آوریم.

برای به دست آوردن چندین مقدار به طور همزمان، مقدار head -n را به تعداد خطوط مورد نیاز تغییر دهید.

cat /dev/urandom | tr-dc'[:alpha:]’ | fold -w ${1:-20} | head -n 5
POzxNTvFtNQqjzgJFwou
RaZpkKDCWIvzAxaCraMu
BldZwyUIYWZPFnMiMETl
CxVFKmAoGBEZysLqzORo
YoXTcgLzXdnoEzoMwmFa

روش 4: Base64

همچنین می توانید از ابزار base64 برای تولید یک رشته تصادفی استفاده کنید. برای مثال، با استفاده از متغیر $RANDOM، می‌توانیم انجام دهیم:

echo $تصادفی | base64 | head -c 20; echo

MTM2ODEK

روش 5: بایت های شبه تصادفی OpenSSL

دستور OpenSSL rand به شما امکان می دهد بر اساس بایت های تصادفی تولید کنید روی نوع مشخص شده این انواع شامل مقادیر base63 و hex می باشد.

مثلا:

openssl rand -hex 20
1dba62137447861b2b2eb81e5886fa98d021007b

یا از base64 به صورت زیر استفاده کنید:

openssl rand -base64 21
i05hHQeajBZcZerx/FtPtJH4XYUd

نتیجه

در آستانه نزدیک شدن، bash ابزارهای مختلفی را ارائه می دهد که می توانید از آنها برای تولید رشته های تصادفی استفاده کنید. بنابراین، تنها کاری که باید انجام دهید این است که ابزارهای مختلف را ترکیب کرده و روشی هوشمندانه برای بدست آوردن رشته های تصادفی متناسب با نیازهای شما ایجاد کنید.

پیشنهاد می‌کنیم بخوانید:  -z در Bash به چه معناست

برای نگارش بخشهایی از این متن ممکن است از ترجمه ماشینی یا هوش مصنوعی GPT استفاده شده باشد
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم

زمان انتشار: 1402-12-30 19:36:02

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید