📜 نحوه ذخیره پیکربندی در اسکریپت پوسته – مجموعه امنیت اطلاعات

پیکربندی را هنگام اجرای اسکریپت پوسته با استفاده از یک روش ساده اما مؤثر ذخیره کنید.

اسکریپت پوسته

من برای توصیف این ایده از اسکریپت پوسته زیر استفاده خواهم کرد.

هیچ چیز خاصی ، فضای دیسک موجود را به صورت مشخص نقشه نمی کند. سرور و پارتیشن.

 #! / usr / bin / env bash
# فضای دیسک موجود را روی سرور و پارتیشن خاص نمایش دهید

# پارامتر پیش فرض
default_bastion = ""
default_busername = ""
default_server = "localhost"
default_username = "milosz"
default_partition = "/ srv"

# سرور بعدی Cloud
nextcloud_server = "nextcloud.local"
nextcloud_partition = "/ داده"

# سرور dokuwiki
dokuwiki_bastion = "bastion.example.org"
dokuwiki_busername = "تندرست"
dokuwiki_server = "192.0.2.10"
dokuwiki_username = "dokuwiki"
dokuwiki_partition = "/ ویکی"

# کلاب سرور
kolab_bastion = "bastion.example.org"
kolab_busername = "تندرست"
kolab_server = "192.0.2.20"
kolab_username = "نظارت"
kolab_partition = "/"

# دریافت سرور / برنامه های تعریف شده
برنامه های کاربردی = "$ ((set -o posix؛ set) | awk -F '=" "/ _server / {تقسیم ($ 1 ، آرایه ،" _ ")؛ آرایه چاپ [1]}' | grep -v پیش فرض)"

# ویژگی های تعریف شده را بدست آورید
ویژگی = = $ ((set -o posix؛ set) | awk -F '=' '/ default_ / {تقسیم (1 $ ، آرایه ، "_")؛ آرایه چاپ [2]}') "

برای برنامه در برنامه های $؛ انجام
  # ویژگی را برای سرور / برنامه تعریف کنید
  برای ویژگی در $ ویژگی؛ انجام
    Application_attribute = "$ {برنامه _ $ {ویژگی}"
    default_attribute = "پیش فرض _ $ {ویژگی}"
    اگر [ -n "${!application_attribute}" ]؛ پس از آن
      eval "$ {ویژگی}" = "$ {! Application_attribute}"
    دیگر
      eval "$ {ویژگی}" = "$ {! default_attribute}"
    فی
  انجام شده

  # یک عمل را انجام دهید
  اگر [ -n "$bastion" ]؛ پس از آن
    bastion_param = "- J $ ername نام اتوبوس} @ $ {سنگر}"
  دیگر
    bastion_param = ""
  فی
echo -n "$ server":
  ssh $ bastion_param $ سرور -l $ نام کاربری "bash -c" df -h --output = benef $ partition | sed 1d '"
انجام شده 

با استفاده از

اسکریپت پوسته فوق را اجرا کنید تا فضای دیسک موجود را روی سرورهای مشخص شده مشاهده کنید.

 nextcloud.local: 87G
192.0.2.10: 98G
192.0.2.20: 5.5G 

نحوه کار

ویژگی ها

مقادیر پیش فرض را تعیین کنید ، به یاد داشته باشید که موارد خالی را در آن قرار دهید.

 # پارامترهای پیش فرض
default_bastion = ""
default_busername = ""
default_server = "localhost"
default_username = "milosz"
default_partition = "/ srv" 

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

 # دریافت ویژگی های تعریف شده
ویژگی = = $ ((set -o posix؛ set) | awk -F '=' '/ default_ / {تقسیم ($ 1 ، آرایه ، "_")؛ آرایه چاپ [2]}') "

نامهای استخراج شده ویژگی ها.

 attributes = "bastion busname partition navê نام کاربری سرور" 

برنامه ها

برای هر برنامه ویژگی های خود را تعیین کنید.

 # سرور بعدی Cloud
nextcloud_server = "nextcloud.local"
nextcloud_partition = "/ داده"
[...]

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

توجه داشته باشید كه در این مثال از ویژگی سرور به عنوان یك نشانگر برنامه استفاده می كنم.

 # سرور / برنامه تعریف شده دریافت كنید.
برنامه های کاربردی = "$ ((set -o posix؛ set) | awk -F '=" "/ _server / {تقسیم ($ 1 ، آرایه ،" _ ")؛ آرایه چاپ [1]}' | grep -v پیش فرض)" 

نام برنامه های استخراج شده.

 برنامه های کاربردی = "nextcloud dokuwiki kolab" 

ویژگی های تجزیه هر برنامه

من از لیست برنامه های کاربردی تکرار خواهم کرد. [196590001] برای برنامه های کاربردی $. do

اختصاص دادن ویژگی ها (به عنوان مثال ، سرور ، نام کاربری …) با استفاده از متغیر Application_attribute (مقادیری مانند nextcloud_server ، nextcloud_username ، … بسته به نام برنامه) برای تعیین نام متغیر هدف و مقدار خواندن با استفاده از $ {! Application_attribute}. اگر خالی است از مقدار پیش فرض استفاده کنید.

 # ویژگی را برای سرور / برنامه تعریف کنید
  برای ویژگی در $ ویژگی؛ انجام
    Application_attribute = "$ {برنامه _ $ {ویژگی}"
    default_attribute = "پیش فرض _ $ {ویژگی}"
    اگر [ -n "${!application_attribute}" ]؛ پس از آن
      eval "$ {ویژگی}" = "$ {! Application_attribute}"
    دیگر
      eval "$ {ویژگی}" = "$ {! default_attribute}"
    فی
  انجام شده 

اقدامات مورد نیاز را با استفاده از نام های صفت کوتاه انجام دهید.

 # یک عمل را انجام دهید
  اگر [ -n "$bastion" ]؛ پس از آن
    bastion_param = "- J $ ername نام اتوبوس} @ $ {سنگر}"
  دیگر
    bastion_param = ""
  فی
echo -n "$ server":
  ssh $ bastion_param $ server -l $ نام کاربری "bash -c" df -h --output = avail $ partition | sed 1d '"

انتهای حلقه برنامه توضیحی است.

 انجام شده 

یادداشت های اضافی

] برای جدا کردن این قسمت ها از اسکریپت اصلی پوسته از منبع منبع استفاده کنید.