لینوکس و شبکه

لینوکس و شبکه
طبقه بندی موضوعی
آخرین مطالب
  • ۹۹/۱۱/۱۳
    java

۴۷ مطلب با کلمه‌ی کلیدی «linux» ثبت شده است

۱۴
اسفند

ماژول  pam_access.so  در لینوکس وجود دارد ولی به کرنل اضافه نشده است و باید برای ایجاد محدودیت آن را به کرنل اضافه نماییم

برای اینکار:

$ vim /etc/security/access.conf:
   #add role:
   + : root : ALL
$ vi /etc/pam.d/password-auth
   account <tab> required <tab> pam-access.so

نکته: می‌توان از syntax فایل login موجود در مسیر pam.d موجود در مسیر etc استفاده کرد

  • behrooz mohamadi nsasab
۲۰
دی

نکات:

  • محیط استیج یعنی وضعیت آماده کامیت کردن

  • هد یکی از کامیت‌ها یا تغییرات پایداری است که در یک شاخه وجود دارد. معمولا آخرین کامییتی است که کرده ایم
  • نمایش تغییرات بر اساس برنامه diff -u انجام می‌گیرد.
  • اول همه فایل‌های untracked هستند یعنی گیت مواظب آنها نیست و بعد آن را add می‌کنیم و در اینصورت گیت آنها را میفهمد و مواظبت می‌کند یعنی میروند در محیط stage و بعدا آن را کامیت می‌کنیم و با این کار به محیط پایدار خواهند رسید
  • وقتی از یک سایتی یک پروژه راکلون می‌کنیم اسم کامیت پایدار (معمولا HEAD) آن پروژه را می‌گذاریم origin و همچنان اسم آخرین نسخه پایدار سیستم خودم هم master خواهد بود

دستورات:

ایجاد پروژه و اقدامات اولیه

  • ساختن یک پروژه گیت خالی که یک فولدر مخفی ایجاد می‌کند
$ git init

 

  • کلون کردن یک پروژه در سیستم خود
$ git clone <URL.git>

 

  • از پروژه فعلی یک ریپوزیتوری در سرور ایجاد کن و اسم آن را بگذار اوریجین و آدرس آن را هم باید ادمین سرور گیت به ما بدهد
$ git remote add origin URL

 

نمایش وضعیت و لاگ

  • نمایش وضعیت فایل‌های موجود در پوشه ای که گیت آن پوشه را در اختیار گرفته است:
$ git status

 

  • مشاهده کارهایی که کردید
$ git log --stat --summary

 

  • مشاهده کارهایی که کردید با تفاوت دیف‌ها:
$ git log -p

 

  • نمایش تغییرات کنونی با تغییرات هِد
$ git diff HEAD

 

  •  فایل‌های محیط استیج چه تغییراتی داشته اند.-تفاوت هد و استیج را نشان می‌دهد
$ git diff --staged
$ git diff --color

 

  • نشان دادن تغییرات یک کامیت
$ git show <Hash Of Commit>

 

  •  نمایش جزییات یک تگ که بعنوان ورژن شناخته می‌شود:
$ git show <tag name>

 

  • وضعیت را در سرور گیت نشان میدهد(باید بررسی شود)
$ git remote

 

 

اقدامات در stage و unstage

  • یک فایل را از استیج بیرون بیاور
$ git reset file

 

  • بازگشت به آخرین تغییرات در آن فایل-با این کار فایل اصلی که در هد است جایگزین فایلی می‌شود که در آن تغییرات اشتباه داده بودید
$ git checkout -- <FILE>

 

  • حذف فایل stage شده موجود و تبدیل به unstage
$ git rm --cached <FileNames>

 

  • حذف فولدر  stage شده موجود و تبدیل به unstage
$ git rm --cached -r <FOLDER>

 

  • پاک کردن یک فایل از گیت و فایل‌سیستم
$ git rm <file>

 

 

 

کامیت و تگ

  • افزودن یک تغییر در استیج :
$ git add <File>

 

  • افزودن یک تغییر در استیج:
$ git add -A

 

  • انتقال تغییرات از استیج به کامیت:
$ git commit -m "message"

 

  • بازگشت به آخرین کامیت(اگر استیج نشده باشد یعنی دستور اَد زده نشده باشد)
$ git checkout -- filename

 

  • بازگشت به آخرین کامیت درصورتی که دستور اَد زده شده باشد
$ git reset HEAD filename

 

  • نکته: tag می‌تواند به ما بگوید که کدام کامیت است که قابلیت ارائه به مشتری را دارد. یعنی مدیر پروژه در ذهن خودش حفظ نکند که کدام ورژن شماره یک است و کدام شماره نسخه دوم از برنامه است. معمولا شرکت‌ها برای اینکه یک release از محصول بدهند در کامیت مطلوب یک تگ میزنند که تحت عنوان ورژن شماره خاص از محصول شناخته بشود.
  • نکته: تگ بر روی کامیت زده می‌شود
  • نمایش تگ‌ها
$ git tag

 

  • زدن تک به آخرین کامیت  :
$ git tag -a v2.0.1 -m " توضیحات در باره این تگ"

 

 

  • به یک کامیت قدیمی یک تگ اختصاص دادیم:
$ git tag -a v1.3.9 <Hash Of custom commit> -m "توضیحات درباره تک"

 

  • نمایش تمام تگ‌هایی که در اول آن کاراکتر "وی" قرار دارد:
$ git tag -l "v*"

 

  • نکته: اگر تغییر از نوع ایجاد تگ باشد، گیت آن را نمی‌فهمد. یعنی دستور git status ایجاد تگ را گزارش نمی‌دهد.(در نتیجه در دستور پوش هم چیزی به سرور اضافه نخواهد شد)
  • تگ مورد نظر را به شاخه اوریجین در سرور اضافه  کند
$ git push origin <TagName>

 

  • تگ‌ها را به شاخه اوریجین در سرور گیت اضافه کن:
$ git push origin --tags
  • رفتن به یک تگ(یعنی کامیتی که در آن تگ زده شده) در پروژه(نکته: اگر به یک تگ checkout کردیم برای ایجاد تغییرات باید یک برنچ ایجاد نماییم و تغییرات را به آن اعمال نماییم.)
$ git checkout <Tag name>

 

  • پروژه ای که از سایت گرفتم را تغییر دادم. این تغییرات در شاخه مَستر سیستم خودم انجام گرفته است. اگر بخواهم این تغییرات را در برنچ اصلی سایت قرار بدهم باید از این دستور کمک بگیرم
$ git push origin master

 

  • آخرین تغییراتی که در سایت وجود دارد که با نام اوریجین شناخته می‌شود را بگیرد و در شاخه مَستر سیستم خودم اَعمال کن
$ git pull origin master

 

  • تغییرات مستر را به شاخه اوریجین که در سرور است اضافه کن:
$ git push origin master

 

 

برنچ

  • نمایش تمامی برنچ‌های موجود
$ git branch

 

  • ساختن یک برنج جدید:
$ git branch <Name>

 

  • رفتن به برنچ دیگر(بکش بیرون اون رو):
$ git checkout <branchName>

 

  • پاک کردن یک برنچ:
$ git branch -d <BranchName>

 

  • برنجی که هِد در آن است را با برنج ذکر شده یکی می‌کند:
$ git merge <branchName>

 

  • تنها مشاهده تغییرات سرور آنلاین(ریموت)- نکته: تغییرات به لوکال منتقل نمی‌شود
$ git fetch origin 

 

 

کار با merge

  • پس از اینکه با دستور fetch‌ صحت تغییرات مخزن آنلاین را مشاهده کردیم،‌ آن را با دستور زیر از مخزن آنلاین به لوکال منتقل می‌کنیم.(حتما باید نام برنج آورده بشود)
$ git merge origin/master

 

 

کار با blame

  • نکته: وقتی یک باگ در یک فایل پیدا می‌کنیم git blame اجازه می‌دهد که آن را گردن یکی بیاندازید.
  • تاریخچه تغییرات فایل را نشان می‌دهد
$ git blame <FileName>

 

  • تاریخچه تغییرات لاین هشتم از فایل را نشان می‌دهد
$ git blame <FileName> -L8

 

  • تاریخچه تغییرات لاین هشتم تا لاین دهم از فایل را نشان می‌دهد(نفر آخری که تغییرات را ایجاد کرده است)در پروژه
$ git blame <FileName> -L8,10

 

 

 

برخی تنظیمات ساختاری خود گیت

  • می‌توانیم توسط دستورات زیر نام کاربری یا ایمیل یا دیگر موارد را برای گیت فعلی تنظیم نماییم
$ git config --global user.name برخی تنظیمات
$ git config --global user.name "Your Full Name"
$ git config --global user.email you@somewhere.com

 

 

 

 

 

    • behrooz mohamadi nsasab
    ۰۱
    مرداد


    tcpdump -i eth0 #Capture Packets from Specific Interface

    tcpdump -i any #Capture all packets in any interface

    tcpdump -c 5 -i eth0 #Capture Only N Number of Packets

    tcpdump -A -i eth0 #Print Captured Packets in ASCII

    tcpdump -D #Display Available Interfaces

    tcpdump -XX -i eth0 #Display Captured Packets in HEX and 

    tcpdump -w 0001.pcap -i eth0 #Capture and Save Packets in a File

    tcpdump -r 0001.pcap #Read Captured Packets File

    tcpdump -n #show IP address replace name (disable name resolution) 

    tcpdump -nn  #show port address replace name (disable port resolution with -nn

    tcpdump  tcp #Capture only TCP Packets.

    tcpdump port 22 #Capture Packet from Specific Port

    tcpdump port 80 #capture packets related to a web (HTTP) service

    tcpdump -i eth0 src 192.168.0.2 #Capture Packets from source IP

    tcpdump -i eth0 dst 50.116.66.139 #Capture Packets from destination IP

    tcpdump --number #show acket numbers in output

    tcpdump -t #omit timestamp info from tcpdump outpu

    tcpdump -v #show detailed output

    tcpdump  icmp #capture ICMP packets only

    tcpdump host 54.204.39.132 #only packets related to a specific host

    tcpdump -i any -c5 -nn \

         src 192.168.122.98 and port 80 #filter packets from source IP address 192.168.122.98 and service HTTP only

    tcpdump -i any -c5 -nn "port 80 \

         and (src 192.168.122.98 \

         or src 54.204.39.132)" #filtering packets for HTTP service only (port 80) and source IP addresses 192.168.122.98 or 54.204.39.132



    • behrooz mohamadi nsasab
    ۱۶
    تیر

    Options:

    update
    گرفتن (دوباره بدست آوردن) لیست بسته‌های جدید
    upgrade:
    آپگرید کردن
    install
    نصب یک بسته
    remove:
    حذف یک بسته
    purge:
    حذف بسته به همراه تمامی تنظیمات آن
    autoremove:
    Remove automatically all unused packages that were automatically installed to satisfy dependencies for other packages and are now no longer needed.
    dist-upgrade:
    Distribution upgrade
    build-dep:
    Configure build-dependencies for source packages. install all dependencies for 'packagename'
    clean:
    Erase downloaded archive files. clean clears out the local repository of retrieved package files. It removes everything but the lock file from /var/cache/apt/archives/ and /var/cache/apt/archives/partial/.
    autoclean:
    پاک کردن فایل‌های آرشیو شده از دانلود‌های قبلی
    check:
    Verify that there are no broken dependencies
    source:
    Download source archives. Source packages are tracked separately from binary packages via deb-src lines in the sources.list.
    [--compile]: package will be compiled to a binary .deb using dpkg-buildpackage for the architecture as defined by the [--host-architecture] option.
    [--download-only]:source package will not be unpacked.
    download:
    دانلود فایل باینری در مسیر فعلی
    changelog:
    Download and display the changelog for the given package
    سیاهه یا تاریخچهٔ تغییراتی که در پروژه صورت گرفته است
    indextargets:
    listing of information about all data files (index targets) apt-get update would download
     

     


    Options:

    [--no-install-recommends]
    در هنگام نصب، بسته‌های توصیه‌شده بعنوان وابستگی لحاظ نشوند
    [--install-suggests]
    درهنگام نصب بسته‌های پیشنهاد شونده(توسط برنامه) بعنوان وابستگی لحاظ نشوند
    [-d, --download-only]
    فقط فایل‌ها دانلود شوند(unpacked یا نصب نشوند)
    [-f, --fix-broken]
    تلاش برای اصلاح گسیختگی‌های موجود در  وابستگی‌ها
    با این گزینه به برنامه apt اجازه داده می‌شود تا درصورت نیاز هر بسته‌ای را حذف نماید
    [-m, --ignore-missing, --fix-missing]
    نادیده گرفتن بسته‌‌های‌ خرابی(مثلا دانلود نمیشوند یا اینکه دانلود شده اند ولی خراب هستند)
    اگر بسته‌ها نمی‌توانند دانلود شوند یا بعد از دانلود امکان چک و بررسی یکپارچکی وجود نداردآن بسته‌ها را عقب نگه‌دار و نتیجه را هندل کن
    اگر این سوییچ را با -f استفاده نمایید ممکن است در  مواردی به ارور برخورد نمایید
    اگر نام یک بسته در خط فرمان برای نصب آورده شده باشد درصورت عدم دانلود این بسته بدون هیچ گونه اخطاری از نصب این بسته صرف نظر میشود
    [--no-download]
    فقط از بسته‌های deb موجود(کنونی) در سیستم‌عامل که پیش‌تر دانلود شده استفاده شود
    [-q, --quiet]
    این کامند برای تهیه لاگ بسیار مفید است زیرا نشانگرهای پیشرفت و موارد توضیحاتی را حذف می‌کند
    با مقداردهی به -q=# میتوانیم  سطح عدم تولید توضیحات را مشخص نماییم
    [-s, --simulate, --just-print, --dry-run, --recon, --no-act]
    هیچ کاری صورت نگیرد
    شبیه‌سازی و نمایش در خروجی از تغییراتی که با اجرای دستور صورت خواهد گرفت
    [-y, --yes, --assume-yes]
    بطور اتوماتیک به هر  prompt پاسخ yes خواهد داد
    run non-interactively
    در موارد نامطلوب دستور apt-get متوقف خواهد شد(نظیر: تغییر در نگهداری بسته یا نصب یک بسته غیرمجاز  یا حذف یک بسته خیلی مهم)
    [--assume-no]
    بصورت پیش‌فرض به  همه promp ها پاسخ no می‌دهد
    [--no-show-upgraded]
    عدم نمایش لیست تمام بسته‌هایی که آپگرید شده‌اند
    [-V, --verbose-versions]
    نمایش نسخه تمام نسخه‌ها از بسته‌هایی که آپگرید شده‌اند
    [-a, --host-architecture]
    بصورت پیش‌فرض تنظیم نیست
    در زمان استفاده از دستور apt-get source --compile معماری بسته‌های build شونده کنترل و  cross-builddependencies تامین شوند
    [-b, --compile, --build]
    Compile source packages after downloading them.
    [--ignore-hold]
    Ignore package holds;
    بسته را نگهداری ننماید-به عبارتی پس از نصب آن را در سیستم نگه‌ندارد
    [--with-new-pkgs]
    این سوییچ وقتی با دستور upgrade همراه شود دراین صورت مجاز به نصب بسته‌های جدید خواهد بود.
    این دستور زمان نیازمندی به یک dependency مفید خواهد بود تا آن نیز بتواند نصب نماید
    نکته:دستور upgrade هیچگاه بسته‌ای را حذف نمی‌کند و فقط بسته جدید را نصب می‌کند
    [--no-upgrade]
    Do not upgrade packages;
    همراه با دستور  install : اگر بسته هم‌اکنون نصب شده باشد آنگاه از  upgrade آن دستور جلوگیری بعمل خواهد آمد
    [--only-upgrade]
    همراه با دستور  install : اگر بسته هم‌اکنون در سیستم‌عامل موجود نباشد، نصب صورت نگیرد
    تنها زمانی بسته را آپگرید خواهد کرد که درحال حاضر بسته در سیستم‌عامل وجود داشته و ورژن جدید از آن در دسترس باشد
    [--allow-downgrades]
    این دستور خطرناک است و ممکن است به سیستم عامل آسیب برساند
    تنها در موارد خاص کاربرد دارد و در صورت دانلود ممکن است پیغامی ظاهر نشود
    [--allow-remove-essential]
    این دستور خطرناک است و ممکن است به سیستم عامل آسیب برساند
    بله(Force yes) به حذف دستوراتی که بعنوان پایه در سیستم عامل کاربرد دارند
    [--force-yes]
    بله(Force yes) به تمامی پیغام‌ها
    این دستور منقرض شده است و با دستورات
      --allow-downgrades, --allow-remove-essential, --allow-change-held-packages 
    جایگزین شده است
    [--print-uris]
    بجای اینکه فایل‌ها نصب شوند آدرس URL آن پرینت می‌شود
    هر URL دارای path و destination file name و سایز و کد MD5 است
    sudo apt-get install aptitude --print-uris
    [sudo] password for behrooz: 
    Reading package lists... Done
    Building dependency tree       
    Reading state information... Done
    The following additional packages will be installed:
      aptitude-common libclass-accessor-perl libcwidget3v5 libio-string-perl libparse-debianchangelog-perl libsub-name-perl
    Suggested packages:
      aptitude-doc-en | aptitude-doc apt-xapian-index debtags libcwidget-dev libhtml-template-perl libxml-simple-perl
    The following NEW packages will be installed:
      aptitude aptitude-common libclass-accessor-perl libcwidget3v5 libio-string-perl libparse-debianchangelog-perl libsub-name-perl
    0 upgraded, 7 newly installed, 0 to remove and 38 not upgraded.
    Need to get 3,494 kB of archives.
    After this operation, 15.8 MB of additional disk space will be used.
    'http://deb.debian.org/debian/pool/main/a/aptitude/aptitude-common_0.8.7-1_all.deb' aptitude-common_0.8.7-1_all.deb 1592678 MD5Sum:944f23494615284543660e9ee02c6c6d
    'http://deb.debian.org/debian/pool/main/c/cwidget/libcwidget3v5_0.5.17-4+b1_amd64.deb' libcwidget3v5_0.5.17-4+b1_amd64.deb 312582 MD5Sum:153078784a4cac12829bfb967cd9b8c4
    'http://deb.debian.org/debian/pool/main/a/aptitude/aptitude_0.8.7-1_amd64.deb' aptitude_0.8.7-1_amd64.deb 1477860 MD5Sum:3bd5df11a809e76d0e925e705b0f9f06
    'http://deb.debian.org/debian/pool/main/libs/libsub-name-perl/libsub-name-perl_0.21-1_amd64.deb' libsub-name-perl_0.21-1_amd64.deb 13122 MD5Sum:d2ae0127b9770f1511f9d8d6e65c415a
    'http://deb.debian.org/debian/pool/main/libc/libclass-accessor-perl/libclass-accessor-perl_0.34-1_all.deb' libclass-accessor-perl_0.34-1_all.deb 25950 MD5Sum:e8d44fcd57dcb4a39e53f7956b30dd22
    'http://deb.debian.org/debian/pool/main/libi/libio-string-perl/libio-string-perl_1.08-3_all.deb' libio-string-perl_1.08-3_all.deb 12298 MD5Sum:8d09424a4c3ba34a8ff890af95391947
    'http://deb.debian.org/debian/pool/main/libp/libparse-debianchangelog-perl/libparse-debianchangelog-perl_1.2.0-12_all.deb' libparse-debianchangelog-perl_1.2.0-12_all.deb 59376 MD5Sum:52a19d38904388812afef8d78611e26e
    
     
    [--purge]
    اگر بجای remove استفاده شود در این صورت همه چیز را پاک خواهد کرد
    [--reinstall]
    نصب مجدد بسته‌های که هم‌اکنون نصب شده است(در ورژن بالاتر)
    [--list-cleanup]
    بطور پیش‌فرض این سوییچ در دستور تعبیه شده است
    درصورت روشن بودن دستور apt  بطور اتوماتیک محتوی /var/lib/apt/lists  مدیریت را مدیریت کرده و اطمینان حاصل می‌گردد که فایل‌های منسوخ پاک شده باشد
    تنها دلیلی که این ویژگی را می‌توان خاموش کرد این استکه این فایل بطور مداوم تغییر می‌نماید
    نکته: از سوییچ  --no-list-cleanup برای خاموش کردن آن استفاده می‌شود
    [--no-remove]
    اگر هر بسته‌ای بخواهد حذف شود دستور apt-get همان موقع بدون اینکه pronpt بدهد قطع می‌شود
    [--auto-remove, --autoremove]
    Remove automatically all unused packages that were automatically installed to satisfy dependencies for other packages and are now no longer needed as dependencies changed
    [--only-source]
    تنها در دستورات buil-dep و  source معنی پیدا می‌کند.
    نشان میدهد که نام سورس داده شده به فایل‌های باینری مپ نشده باشد و دستورات تنها  نام بسته‌های سورس را بعنوان آرگومان قبول نمایند
    [--allow-unauthenticated]
    Ignore if packages can't be authenticated and don't prompt about it.
    This can be useful while working with local repositories, but is a huge security risk if data authenticity isn't ensured in another way by the user itself.
    The usage of the Trusted option for sources.list(5) entries should usually be preferred over this global override.
    [--no-allow-insecure-repositories]
    در دستور update ، از گرفتن دیتا‌ی verified نشده جلوگیری بعمل می‌آورد
    دستور apt update در صورت مواجهه با  ریپوزیتوری‌هایی با امضای رمز شده غیر معتبر ، fail می‌شود
    [--show-progress]
    نمایش نوار میزان پیشرفت کار در حین نصب با پاک یا آپگرید
    [--with-source filename]
    Adds the given file as a source for metadata. Can be repeated to add multiple files. See --with-source description in apt-cache(8) for further details.
    [-c, --config-file]
    Specify a configuration file to use.
    The program will read the default configuration file and then this configuration file.
    If configuration settings need to be set before the default configuration files are parsed specify a file with the APT_CONFIG environment variable. See apt.conf(5) for syntax information.
     

     

    FILES

    /etc/apt/sources.list:
    Locations to fetch packages from. Configuration Item: Dir::Etc::SourceList.
    /etc/apt/sources.list.d/:
    File fragments for locations to fetch packages from. Configuration Item: Dir::Etc::SourceParts.
    /etc/apt/apt.conf:
    APT configuration file. Configuration Item: Dir::Etc::Main.
    /etc/apt/apt.conf.d/:
    APT configuration file fragments. Configuration Item: Dir::Etc::Parts.
    /etc/apt/preferences:
    Version preferences file. This is where you would specify "pinning", i.e. a preference to get certain packages from a separate source or from a different version of a distribution. Configuration Item:[Dir::Etc::Preferences].
    /etc/apt/preferences.d/:
    File fragments for the version preferences. Configuration Item: Dir::Etc::PreferencesParts.
    /var/cache/apt/archives/:
    Storage area for retrieved package files. Configuration Item: Dir::Cache::Archives.
    /var/cache/apt/archives/partial/:
    Storage area for package files in transit. Configuration Item: Dir::Cache::Archives (partial will be implicitly appended)
    /var/lib/apt/lists/:
    Storage area for state information for each package resource specified in sources.list(5) Configuration Item: Dir::State::Lists.
    /var/lib/apt/lists/partial/:
    Storage area for state information in transit. Configuration Item: Dir::State::Lists (partial will be implicitly appended)
     
     
     
     
    • برای نمایش آدرس URL یک بسته ای که در هنوز در سرور نصب نیست
    apt-get -y install --print-uris <PackageName> | cut -f 2 -d \' | grep \.deb

     

     

     

    • behrooz mohamadi nsasab
    ۲۶
    خرداد

    option:

    -i This installs a new package(rpm -i package)

    -F This will upgrade packages, but only if an earlier version currently exists(rpm -F package)

    -U This upgrades or installs the package currently installed to a newer version(rpm -U package)

    -e erase (uninstall) package(rpm -e package)

    -q query packages(rpm -q package)

    -V verify installed packages(rpm -V package)

    -K verify package signature(rpm -K package)

    --rebuilddb rebuild the database indices from the installed package headers(rpm --rebuilddb)

    --initdb create a new database if one doesn’t already exist(rpm --initdb)

    --import import PUBKEY(rpm --import /usr/share/rhn/RPM-GPG-KEY)


    options with i, U:

    -v show package name(rpm -iv package)

    -h display progress(rpm -ivh package)

    -vv Print lots of ugly debugging information(rpm -ivv package)

    --nodeps Don’t do a dependency check before installing or upgrading a package(rpm -ivh --nodeps package)

    --test Don’t really uninstall anything, just go through the motions(rpm -ivh --test package)


    options with q:

    -a Query all installed packages(rpm -qa)

    -i Display package information, including name, version, and description. This uses the --queryformat if one was specified(rpm -qi) package

    -l List files in package(rpm -ql package)

    -c List only configuration files (implies -l)(rpm -qc package)

    -d List only documentation files (implies -l)(rpm -qd package)

    -f Query package owning FILE(rpm -qf /bin/bash)

    -R List packages on which this package depends(rpm -qR package)

    -s Display the states of files in the package (implies -l)(rpm -qs package)

    --last Orders the package listing by install time such that the latest packages are at the top(rpm -q --last package)

    --changelog Display change information for the package(rpm -q --changelog package)



    نمایش درصد پیشرفت کار

    rpm -i APP.rpm --percent

     برای ساخته شدن بانک اطلاعاتی RPM استفاده میشود و اینکه از این دیتابیس برای نگهداری اطلاعات مربوط به بسته های نرم افزاری نصب شده در سیستم عامل استفاده می‌شود

    rpm --rebuilddb

    جلوگیری از نصب برخی مستندات از قبیل man pages

    rpm -i APP.rpm --excludedocs

    نصب مستندات و موارد توضیحی(بصورت پیشفرض در دستور قرار دارد)

    rpm -i APP.rpm --included

    جایگزین شدن فایل‌های نرم‌افزار جدید برروی نرم افزار قدیمی(نسخه‌های قدیمی از همان نرم‌افزار)

    rpm -i APP.rpm --replacefiles

    جایگزین شدن بسته‌‌های نرم‌افزار جدید برروی نرم افزار قدیمی(نسخه‌های قدیمی از همان نرم‌افزار)

    rpm -i APP.rpm --replacepkgs

    بعد از نصب نرم‌افزار تعداد 50 کاراکتر (#) روی صفحه نمایش ظاهر شود

    rpm -i APP.rpm --hash

    بررسی نکردن وابستگی‌ها در حین پاک نمودن یک بسته

    rpm -e APP.rpm -nodeps




    rpm -e  --test -vv  APP.rpm

    دستور بصورت واقعی صورت نپذیرد و فقط مراحل اجرای دستور در صفحه نمایش نشان داده شود


    rpm -ql kernel

     فایل‌های نصب شده در سیستم عامل از برنامه مورد نظر(بهتر است بجای l از سوییچ s استفاده شود که وضعیت را هم نمایش دهد)

     rpm -qs kernel

     فایل‌هایی که در سیستم عامل به نصب بسته مورد نظر ارتباط دارد (اگر فایل خراب شده باشد عبارت missing نمایش داده خواهد شد)-(این سوییچ کمی کامل‌تر از l [ال]می‌باشد)

     

     rpm -qd kernel

     لیست شدن فایل‌های توضیحاتی از بسته مورد نظر


     توضیحات کامل از بسته

     rpm -qi kernel

     rpm -qa kernel

     فهرستی از تمام بسته های نصب شده در سیستم عامل

     

    • behrooz mohamadi nsasab
    ۱۷
    فروردين

    تبدیل  jsonObject به Key=Value

    $ cat test.json
    {
        "var": 1,
        "foo": "bar",
        "x": "test"
    }
    $ jq -r "to_entries|map(\"\(.key)=\(.value|tostring)\")|.[]" test.json
    foo=bar
    var=1
    x=test

     

    curl -s 'https://api.github.com/users/lambda' | jq -r '.name'

     

    URL

    URL

    URL

    • behrooz mohamadi nsasab
    ۲۶
    اسفند

    • modprobe rt2800usb #Load module in kernel
    • modprobe -r rt2800usb #remove module from kernel
    • or  [rmmod rt2800usb] #remove module from kernel
    •  lsmod | grep rt2800 #check is load


    Permanent load modules:

    vim /etc/modules-load.d/rt2800usb.conf

    • rt2800usb #add this line
    Check if systemd service loaded the module:

    • systemctl status systemd-modules-load.service

    The output should look like this:


    systemd-modules-load.service - Load Kernel Modules
      Loaded: loaded (/usr/lib/systemd/system/systemd-modules-load.service; static)
      Active: active (exited) since Wed, 03 Apr 2013 22:50:57 +0000; 46s ago
            Docs: man:systemd-modules-load.service(8)
                  man:modules-load.d(5)
     Process: 260 ExecStart=/usr/lib/systemd/systemd-modules-load (code=exited, status=0/SUCCESS)

      if status=1/FAILURE

     journalctl -b

    URL

    • behrooz mohamadi nsasab
    ۱۹
    اسفند

    [CENTOS7]-[DEBIAN9]:

    SHOW:

    • $ hostname
    • $ hostname -s #displayed the computer short name
    • $ hostname -f #displays the computer FQDN in the network
    • $ cat /etc/hostname
    • Add new hostname in /etc/hosts

    CHANGE:

    • hostnamectl set-hostname NAME
    • hostnamectl #Show change config



    • behrooz mohamadi nsasab
    ۱۴
    اسفند

     

     

    Show address:

    ip: show commands:

    • ip help                                    ---> #Display ip commands and arguments
    • ip -4 a                                     ---> #Only show TCP/IP IPv4
    • ip -6 a                                     ---> #Only show TCP/IP IPv6
    • ip a list eth0                           ---> #Only show eth0 interface
    • ip a show dev eth0                 ---> #Only show eth0 interface
    • ip a show eth0                        ---> #Only show eth0 interface

    addr: Display IP Addresses and property information(abbreviation of address)

    • ip addr                                    ---> #Show information for all addresses
    • ip addr help                            ---> #Display address commands and arguments
    • ip addr show dev eth0            ---> #Display information only for device

    link: Manage and display the state of all network interfaces

    • ip link help                             ---> #Display link commands and arguments
    • ip link ls up                            ---> #Only show running interfaces
    • ip link show dev eth0             ---> #Display information only for device eth0
    • ip link                                     ---> #Show information for all interfaces
    • ip -s link                                 ---> #Display interface statistics
    • ip -s -s link ls eth0                  ---> #get information about a particular network interface
    • ip link set eth0 up                   ---> #Bring eth0 online
    • ip link set eth0 down              ---> #Bring eth0 offline
    • ip link set eth0 promisc on     ---> #Enable promiscuous mode for eth0
     

    Add or Delete Address:

    • ip a add {ip_addr/mask} dev {interface}                             ---> #The syntax is as follows to add an IPv4/IPv6 address
    • ip a del {ipv6_addr_OR_ipv4_addr} dev {interface}          ---> The syntax is as follows to remove an IPv4/IPv6 address:
    • ip addr add 192.168.1.1/24 dev eth0                                   ---> #Add address 192.168.1.1 with netmask 24 to device eth0
    • ip a add 192.168.1.200/255.255.255.0 dev eth0                   ---> To assign 192.168.1.200/255.255.255.0 to eth0
    • ip a add 192.168.1.200/24 dev eth0                                     ---> To assign 192.168.1.200/255.255.255.0 to eth0
    • ip addr del 192.168.1.1/24 dev eth0                                     ---> #Remove address 192.168.1.1/24 from device eth0
    • ip a del 192.168.1.200/24 dev eth0                                       ---> To delete 192.168.1.200/24 from eth0

     


    neigh

    neigh : ARP, Show neighbour objects; also known as the ARP table for IPv4

    • ip neigh                                                                                    ---> #Display neighbour objects(Show neighbour objects; also known as the ARP table for IPv4)
    • ip neigh help                                                                           ---> #Display neighbour commands and arguments
    • ip neighbour                                                                            ---> #View the MAC address of the devices connected in your LAN
    • ip neigh show dev eth0                                                            ---> #Show the ARP cache for device eth0
    • ip neigh add 192.168.1.1 lladdr 1:2:3:4:5:6 dev eth0              ---> #Add address 192.168.1.1 with MAC 1:2:3:4:5:6 to eth0
    • ip neigh del 192.168.1.1 dev eth0                                            ---> #Invalidate the entry for 192.168.1.1 on eth0
    • ip neigh replace 192.168.1.1 lladdr 1:2:3:4:5:6 dev eth0         ---> #Replace the entry for address 192.168.1.1 to use MAC 1:2:3:4:5:6 on eth0
    • ip n show                                                                                  ---> #Display neighbour/arp cache
    • ip neigh show                                                                            ---> #Display neighbour/arp cache

    Sample outputs (note: masked out some data with alphabets):

    74.xx.yy.zz dev eth1 lladdr 00:30:48:yy:zz:ww REACHABLE

    10.10.29.66 dev eth0 lladdr 00:30:48:c6:0a:d8 REACHABLE

    74.ww.yyy.xxx dev eth1 lladdr 00:1a:30:yy:zz:ww REACHABLE

    10.10.29.68 dev eth0 lladdr 00:30:48:33:bc:32 REACHABLE

    74.fff.uu.cc dev eth1 lladdr 00:30:48:yy:zz:ww STALE

    74.rr.ww.fff dev eth1 lladdr 00:30:48:yy:zz:ww DELAY

    10.10.29.65 dev eth0 lladdr 00:1a:30:38:a8:00 REACHABLE

    10.10.29.74 dev eth0 lladdr 00:30:48:8e:31:ac REACHABLE

     

    The last field show the the state of the “neighbour unreachability detection” machine for this entry:

    STALE – The neighbour is valid, but is probably already unreachable, so the kernel will try to check it at the first transmission.

    DELAY – A packet has been sent to the stale neighbour and the kernel is waiting for confirmation.

    REACHABLE – The neighbour is valid and apparently reachable.

     

    Add a new ARP entry:

    • ip neigh add {IP-HERE} lladdr {MAC/LLADDRESS} dev {DEVICE} nud {STATE}     ---> #syntax is
    • ip neigh add 192.168.1.5 lladdr 00:1a:30:38:a8:00 dev eth0 nud perm         ---> #add a permanent ARP entry for the neighbour 192.168.1.5 on the device eth0:

    neighbour state (nud):

    permanent The neighbour entry is valid forever and can be only be removed administratively

    noarp The neighbour entry is valid. No attempts to validate this entry will be made but it can be removed when its lifetime expires.

    stale The neighbour entry is valid but suspicious. This option to ip neigh does not change the neighbour state if it was valid and the address is not changed by this command.

    reachable The neighbour entry is valid until the reachability timeout expires.

    Delete a ARP entry:

    • ip neigh del {IPAddress} dev {DEVICE}               ---> #Syntax
    • ip neigh del 192.168.1.5 dev eth1                            ---> #invalidate or delete an ARP entry for the neighbour 192.168.1.5 on the device eth0

    Change ARP state:

     

    • ip neigh chg 192.168.1.100 dev eth1 nud reachable ---> #TO REACHABLE FOR THE NEIGHBOUR 192.168.1.100 ON THE DEVICE ETH1:


     


    Route

    Route:Display and alter the routing table

    • ip route                                                                      ---> #List all of the route entries in the kernel[routing tables]
    • ip route show                                                            ---> #check the routing table information of the system
    • ip route add default via 192.168.1.1 dev eth0          ---> #Add a default route (for all addresses) via the local gateway 192.168.1.1 that can be reached on device eth0
    • ip route add 192.168.1.0/24 via 192.168.1.1            ---> #Add a route to 192.168.1.0/24 via the gateway at 192.168.1.1
    • ip route add 192.168.1.0/24 dev eth0                       ---> #Add a route to 192.168.1.0/24 that can be reached on device eth0
    • ip route del default via 192.168.1.1                          ---> #delete default gateway                                     
    • ip route delete 192.168.1.0/24 via 192.168.1.1        ---> #Delete the route for 192.168.1.0/24 via the gateway at 192.168.1.1
    • ip route replace 192.168.1.0/24 dev eth0                  ---> #Replace the defined route for 192.168.1.0/24 to use device eth0
    • ip route get 192.168.1.5                                            ---> #Display the route taken for IP 192.168.1.5
    • ip r                                                                             ---> #display the contents of the routing tables
    • ip r list                                                                       ---> #display the contents of the routing tables
    • ip route list                                                                ---> #display the contents of the routing tables
    • ip r list 192.168.1.0/24                                              ---> #Display routing for 192.168.1.0/24

    output:192.168.1.0/24 dev eth1  proto kernel  scope link  src 192.168.1.10

     

    Add a new route:

    • ip route add {NETWORK/MASK} via {GATEWAYIP}               ---> #The syntax is
    • ip route add {NETWORK/MASK} dev {DEVICE}                      ---> #The syntax is
    • ip route add default {NETWORK/MASK} dev {DEVICE}          ---> #The syntax is
    • ip route add default {NETWORK/MASK} via {GATEWAYIP}   ---> #The syntax is
    • ip route add 192.168.1.0/24 via 192.168.1.254                               ---> #Add a plain route to network 192.168.1.0/24 via gateway 192.168.1.254
    • ip route add 192.168.1.0/24 dev eth0                                              ---> #To route all traffic via 192.168.1.254 gateway connected via eth0 network interface

    Delete a route:

    • ip route del default                                                                           ---> #The syntax is[as follows to delete default gateway]
    • ip route del 192.168.1.0/24 dev eth0                                                ---> #In this example, delete the route created in previous subsection:

     


    Disable [or] flush:

    This flush or f command flushes neighbour/arp tables, by specifying some condition.

    • ip -s -s n f {IPAddress}                   ---> #The syntax is
    • ip -s -s n f 192.168.1.5                    ---> #In this example, flush neighbour/arp table
    • ip -s -s n flush 192.168.1.5             ---> #In this example, flush neighbour/arp table
    • ip -4 addr flush label "ppp*"           ---> #disable IP address on all the ppp (Point-to-Point) interfaces
    • ip -4 addr flush label "eth*"            ---> #Here is another example for all the Ethernet interfaces
    • ip -s -s a f to 192.168.2.0/24           --->  #Delete all the IP addresses from the private network (For example) 192.168.2.0/24

    output:

    2: eth0    inet 192.168.2.201/24 scope global secondary eth0

    2: eth0    inet 192.168.2.200/24 scope global eth0

    *** Round 1, deleting 2 addresses ***

    *** Flush is complete after 1 round ***

     


    Txqueuelen

    set the length of the transmit queue of the device using  ip command as follows:

    • ip link set txqueuelen {NUMBER} dev {DEVICE}    --->   # Syntax
    • ip link set txqueuelen 10000 dev eth0                           ---> #change the default txqueuelen from 1000 to 10000 for the eth0
    • ip a list eth0

     


    MTU

    For gigabit networks, set maximum transmission units (MTU) sizes (JumboFrames) for better network performance. The syntax is:
    • ip link set mtu {NUMBER} dev {DEVICE}          ---> #Syntax
    • ip link set eth0 mtu 9000                                         ---> #Set the MTU on eth0 to 9000
    • ip link set mtu 9000 dev eth0                                   ---> #To change the MTU of the device eth0 to 9000
    • ip a list eth0

    Sample outputs:

    2: eth0:  mtu 9000 qdisc pfifo_fast state UP qlen 1000

        link/ether 00:08:9b:c4:30:30 brd ff:ff:ff:ff:ff:ff

        inet 192.168.1.10/24 brd 192.168.1.255 scope global eth1

        inet6 fe80::208:9bff:fec4:3030/64 scope link 

           valid_lft forever preferred_lft forever


     


    Broadcast:

    Notice:By default, the ip command does not set any broadcast address unless explicitly requested

    • ip addr add brd {ADDDRESS-HERE} dev {interface}          ---> #ADDING THE BROADCAST ADDRESS ON THE INTERFACE
    • ip addr add broadcast {ADDDRESS-HERE} dev {interface} ---> #ADDING THE BROADCAST ADDRESS ON THE INTERFACE
    • ip addr add broadcast 172.20.10.255 dev eth0                           ---> #add 172.20.10.255 as broadcast on eth0
     

    Multicast

     

    maddr: Manage and display multicast IP addresses

    • ip maddr                                   ---> #Display multicast information for all devices
    • ip maddr show dev eth0           ---> #Display multicast information for device eth0


     

    OLD and NEW Commands:

    • arp -a                                                      -----> ip neigh
    • arp -v                                                      -----> ip -s neigh
    • arp -s 192.168.1.1 1:2:3:4:5:6                -----> ip neigh add 192.168.1.1 lladdr 1:2:3:4:5:6 dev eth1
    • arp -i eth1 -d 192.168.1.1                       -----> ip neigh del 192.168.1.1 dev eth1
    • ifconfig -a                                               -----> ip addr
    • ifconfig eth0 down                                 -----> ip link set eth0 down
    • ifconfig eth0 up                                      -----> ip link set eth0 up
    • ifconfig eth0 192.168.1.1                       -----> ip addr add 192.168.1.1/24 dev eth0
    • ifconfig eth0 netmask 255.255.255.0     -----> ip addr add 192.168.1.1/24 dev eth0
    • ifconfig eth0 mtu 9000                           -----> ip link set eth0 mtu 9000
    • ifconfig eth0:0 192.168.1.2                    -----> ip addr add 192.168.1.2/24 dev eth0
    • netstat -g                                                 -----> ip maddr
    • route                                                        -----> ip route
    • route add -net 192.168.1.0 netmask 255.255.255.0 dev eth0              -----> ip route add 192.168.1.0/24 dev eth0
    • route add default gw 192.168.1.1                                                        -----> ip route add default via 192.168.1.1
     

    Abbreviation:

    Object Abbreviated form Purpose
    • link(l)                               ----> Network device.
    • address(a [or] addr)         ----> Protocol (IP or IPv6) address on a device.
    • addrlabel(addrl)               ----> Label configuration for protocol address selection.
    • neighbour(n [or] neigh)   ----> ARP or NDISC cache entry.
    • route(r)                             ----> Routing table entry.
    • rule(ru)                             ----> Rule in routing policy database.
    • maddress(m [or] maddr)  ----> Multicast address.
    • mroute(mr)                       ----> Multicast routing cache entry.
    • tunnel(t)                            ----> Tunnel over IP.
    • xfrm(x)                              ----> Framework for IPsec protocol.


    URL1

    • behrooz mohamadi nsasab
    ۱۱
    اسفند

    نمایش همه ستون‌ها بجز ستون شماره یکم و ستون شماره دوم

    cat FIle | awk '{$1=$2="";print$0}'

    • behrooz mohamadi nsasab
    ۰۴
    اسفند

    1. sudo mkdir -p  /media/repo1 /media/repo2  /media/repo3 /opt/DVD
    2. sudo chown -R USERNAME:USERNAME /opt
    3. sudo chmod -R 755 /opt
    4. Copy All DVDs in Directory: /opt/DVD
    5. sudo vim /etc/fstab:
      1. /opt/dvd/debian-9.5.0-i386-DVD-1.iso /media/repo1 iso9660 defaults 0 0
      2. /opt/dvd/debian-9.5.0-i386-DVD-2.iso /media/repo1 iso9660 defaults 0 0
      3. /opt/dvd/debian-9.5.0-i386-DVD-3.iso /media/repo1 iso9660 defaults 0 0
    6. sudo vim /etc/apt/sources.lists:
      1. deb [trusted=yes] file:///media/repo1 stretch main contrib
      2. deb [trusted=yes] file:///media/repo2 stretch main contrib
      3. deb [trusted=yes] file:///media/repo3 stretch main contrib
    • behrooz mohamadi nsasab
    ۳۰
    بهمن

    برای راه اندازی وی پی ان از طریق terminal در لینوکس به روش زیر عمل مینماییم

    modprobe nf_conntrack_pptp    # add pptp module to kernel
    pppd call linuxconfig     # stablished Tunnel
    route add default dev ppp0    #route all traffic to Tunnel

    اسکریپت شده دستورات بالا:

    #!/bin/bash
    username=$1;
    password=$2;
    if [[ "$username" != "" && "$password" != "" ]]; then
    echo "INSTALL STARTING ..."
    # rpm -ivh pptp-1.7.2-22.el7.x86_64.rpm    #if is not install in server please install it
    modprobe  nf_conntrack_pptp
    echo "$username   PPTP    $password        *">/etc/ppp/pap-secrets
    echo 'pty "pptp 10.10.10.10 --nolaunchpppd"    #10.10.10.10 Is Gateway's ip
    name '$username'
    remotename PPTP
    #require-mppe-128
    file /etc/ppp/options.pptp
    ipparam linuxconfig'>/etc/ppp/peers/linuxconfig
    echo 'lock
    noauth
    refuse-eap
    refuse-chap
    refuse-mschap
    nobsdcomp
    nodeflate'>/etc/ppp/options.pptp  #or comment refuse-pap line in tis file
    pppd call linuxconfig
    route add default dev ppp0
    else
    echo "please insert username password."
    fi



    نکته: یکی از dependency های اسکریپت بالا URL

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


    vim /etc/ppp/peers/linuxconfig

    pty "pptp 10.10.10.10 --nolaunchpppd" 
    name USERNAME
    remotename PPTP
    #require-mppe-128
    file /etc/ppp/options.pptp
    ipparam linuxconfig


    vim /etc/ppp/pap-secret

    # Secrets for  authentication using PAP
    # client server secret      IP addresses
    username     PPTP    password     *

    • behrooz mohamadi nsasab
    ۱۱
    بهمن

    1. برنامه  open-vm-tools در لینوکس جهت همگام سازی ماشین مجازی با برنامه vmware می‌باشد(مشابه vmwareTools)
    • behrooz mohamadi nsasab
    ۱۰
    بهمن

    یک تجربه: در دبیان ۹ برای اینکه firmware کارت شبکه یو اس بی رو بشناسانیم از روش زیر استفاده میکنیم



    add to /etc/apt/source.list
    deb http://ftp.fr.debian.org/debian jessie main contrib non-free
    deb http://httpredir.debian.org/debian/ stretch main contrib non-free

    sudo apt-get install debian-reference
    apt-get update && apt-get install firmware-iwlwifi
    sudo apt-get update && apt-get install firmware-iwlwifi
    sudo apt-get update && sudo apt-get install firmware-iwlwifi
    sudo apt-get install modplug-tools 
    sudo apt-get install modprobe
    sudo apt-get install modprob
    sudo apt-get install kmod
    sudo apt-get install wicd
    sudo  apt-get install firmware-realtek
    sudo  apt-get install firmware-iwlwifi 
    sudo  apt-get install firmware-linux
    sudo  apt-get install amd64-microcode firmware-linux-nonfree firmware-misc-nonfree

    • behrooz mohamadi nsasab
    ۱۰
    بهمن
    برای تبدیل یک اسکریپت شل به فایل اجرایی که محتوی آن قابل نمایش نباشد از دستور زیر میتوان استفاده کرد
    به عبارت دیگر دستور زیر فایل کامپایل شده را بصورت فایل اجرایی‌ای که محتوی قابل نمایش نیست در خواهد آورد


    shc -f NAME.sh
    • behrooz mohamadi nsasab
    ۰۶
    تیر
    روش زیر اتصا ل یک مسیر اف تی پی به یک فولدر در سروررا توضیح میدهد
    ابتدا بسته curlftpfs  را نصب نمایید (نکته: اگر به مشکل خورد ابتدا بسته fuse را نصب نمایید)
    vim /etc/init.d/mountftp
    #!/bin/sh
    #
    # Run-level Startup script for curlftpfs
    #
    # chkconfig: 345 91 19
    # description: Startup/Shutdown the curlftpfs
     
    # FTP user, password, and host (you can specify the port also eg. ftp.example.com:2002)
    ftpUser=user                    #نام کاربری از اف تی پی
    ftpPass=password                #پسورد کاربر اف تی پی
    ftpHost=ftp.example.com         #مسیر  اف تی پی مورد نظر که باید به  فولدر متصل شود
    mPath="/var/mounted/ftp"      #فولدر مورد نظر در سرور فعلی که قرار است مسیر اف تی پی  به آن متصل شود
     
    # Create the mounted to dir if doesn't exist
    if [ ! -d $mPath ]; then
        mkdir -p $mPath
    fi
     
    case "$1" in
        start)
            curlftpfs $ftpHost $mPath -o user=$ftpUser:$ftpPass,allow_other
            ;;
        stop)
            fusermount -u $mPath      
            ;;
        reload|restart)
            $0 stop
            $0 start
            ;;
        *)
            echo "Usage: $0 start|stop|restart|reload"
            exit 1
    esac
    exit 0
    سپس قرار دادن این اسکریپت در autostart به روش زیر:
    chmod 755 /etc/init.d/mountftp
    chkconfig mountftp on

     

    دستورات قابل اجرا :
    # Start
    service mountftp start
     
    # Restart and reload
    service mountftp restart
    service mountftp reload
     
    # Stop
    service mountftp stop


    لینک مفید از این مطلب:  LINK

    • behrooz mohamadi nsasab
    ۲۴
    خرداد
    بادستور زیر می‌توان سرعت خواند و نوشتن از دیسک را فهیمد:
    echo -e "WRITE:";
    dd if=/dev/zero of=/tmp/output count=1 bs=100M ;
    rm -f /tmp/output;
     echo -e "\nREAD";
    sudo hdparm -t /dev/sda

    • behrooz mohamadi nsasab
    ۲۴
    خرداد

    در سیستم عامل لینوکس شما قالبیت این را دارید که از محیط گرافیکی دلخواه خود استفاده نمایید: (URL)

    محیط کاربری اول: MATE

    در سه حالت زیر میتوانید نصب نمایید:

    mate-desktop-environment-extras  (full + extras) : This will install the complete MATE desktop including a few extras.

    mate-desktop-environment   (full) : This will install the complete MATE desktop environment.

    mate-desktop-environment-core (core only) :  This is a minimalist MATE installation


    If no graphical environment was present before, you will also need to install a display manager such as GDM or LightDM.

    نکته: شاید لازم باشد بسته زیر را نیز نصب نمایید:

    apt-get install xinit


    محیط کاربری دوم: Gnome

    tasksl : Debian's selection of applications

    gnome :  The full GNOME environment, including applications that are not officially part of the Upstream GNOME releases.

                   It provides the recommended GNOME environment for Debian.

    gnome-desktop-environment : The official upstream GNOME environment, minus a few packages.It is the closest to upstream recommendations.

    gnome-core : Only the official “core” modules of the GNOME desktop. Above packages depend on this one.





    نکته: اگر فقط gnome core installation داشتید میتوانید برای نصب کامل‌تر از روش زیر نیز استفاده نمایید(نصب پوسته گنوم و بدون تمامی ابزارها)
    apt-get install gnome-shell
    apt-get install gnome-terminal
    محیط کاربری سوم: Xfce

    محیط چهارم کاربریLXDE

    محیط کاربری پنجم(پلاسما): KDE



    نکته: برای  پایین آوردن محیط گرافیکی از دستورزیر  استفاده شود
    در دبیان
    /etc/init.d/gdm3 stop
    در اوبونتو
    /etc/init.d/lightdm stop




    • behrooz mohamadi nsasab
    ۲۲
    خرداد

    نکته: سرویس NginX همانند سرویس آپاچی در لینوکس و سرویس IIS در ویندوز است  که یک وب سرور به ما میدهد تا بتوانیم در بستر آن صفحات وب را به اشتراک بگذاریم


    نصب: از دستورات package manager  سیستم عامل استفاده نمایید

    Debian:  sudo apt-get install nginx
    CentOS:  sudo yum install nginx

    نکته: فایل های تنظیماتی سرویس  NginX  در مسیر etc/nginx قرار دارد

    در فایل زیر:

    /etc/nginx/nginx.conf

    در خطی که با  عبارت  include آغاز میشود، مسیر زیر را مطابق نمونه قرار بدهید (در مسیر زیر برای هر دامنه یک فایل تنظیماتی بسازیم و کانفیگ هر سایت و یا دامنه را مجزا درون آن قرار دهید)

    include /etc/nginx/site_available/*.conf;



    یعنی در مسیر site_available به ازای هر فایلی که با پسوند conf وجود دارد و محتوی کانفیگ یک دامنه دلخواه است آن فایل خوانده می‌شود و یک دامنه را کانفیگ می‌کند.

    بطور  مثال برای دامنه BMS  از فایل BMS.conf  در مسیر site-available  که در رهنگر مورد استفاده قرار میگرفته استفاده شد.


    تمپلیت خوب برای استفاده در هر دامنه جدید:

    upstream backend1  {
      ip_hash;
      server 172.16.85.237:8080 max_fails=3  fail_timeout=15s;
      server 172.16.85.238:8080 max_fails=3  fail_timeout=15s;
    }
    server {
            listen 80;
            server_name 172.16.85.244;
            client_max_body_size 250M;
     
    location / {
            proxy_set_header X-Forwarded-Proto http;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_pass http://backend1;
            rewrite ^/$ /Ganjeh last;
           }
    }



    نکته:  کانفیگ بالا در فایل موجود در Site-available قرار خواهد گرفت.

    بعنوان مثال برای فایل BMS.conf در رهنگر مشهد از شکل زیر استفاده شد:

    #pstream backend  {
    #  server 127.0.0.1:8080 ;
    #}
    server {
            listen 80;
            server_name 188.253.0.16;
            server_name mashhad.etrack.ir;
     
    location / {
            proxy_set_header X-Forwarded-Proto http;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_pass http://127.0.0.1:8080/BMS;
           }
    location /BMS {
            proxy_set_header X-Forwarded-Proto http;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_pass http://127.0.0.1:8080/BMS;
           }
     
    location /MapCache {
            proxy_set_header X-Forwarded-Proto http;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_pass http://127.0.0.1:8080/MapCache;
           }
    }


    • behrooz mohamadi nsasab
    ۱۹
    خرداد
    در لینومس دسترسی کامل با دو روش زیر امکان پذیر است:
    1. su
    • نیاز به پسورد روت می‌باشد
    • معمولا دسترسی به یوزر روت در هیچ سازمانی صورت نمیگیرد
    • نمی‌توانیم متوجه شویم که یوزرهای سیستم چکار کرده اند چون همه با یوزر روت کارهایشان را انجام داده اند
  • sudo
    • در مسیر /var/log/auth.log  فعالیت های صورت گرفته لاگ می‌شود.

    به دو صورت میتوان یک یوزر را sudo نماییم:

    1. فایل /etc/sudoers
    2. عضویت در گروه

    روش اول:

    فایل زیر را ادیت کرده و خط زیر را در آن قرار دهید:

    # vim /etc/sudoers(or sudo visudo)
    behrooz ALL=(ALL) ALL

    در خط بالا که به فایل /etc/sudoers اضافه میشود behrooz نام یوزر است


        behrooz indicates user name
        First ALL instructs to permit sudo access from any terminal/machine
        Second (ALL) instructs sudo command to be allowed to execute as any user
        Third ALL indicates all command can be executed as root

    روش دوم:
    در فایل /etc/sudoes یک گروه معرفی شده است که اگر کسی در آن عضو شود به این منزله است که روش اول را در فایل /etc/sudoers انجام داده ایم-
    نکته: در توزیع های کنونی دبیان نام این گروه sudo و در توزیع های کنونی redHat نام این گروه wheel است.
    نکته: برای این که یک یوزر را به گروه جدید اضافه نماییم از روش زیر استفاده می‌شود:
    sudo usermod -aG UserName GroupName







    • behrooz mohamadi nsasab
    ۱۶
    خرداد

    برای نصب برنامه pycharm که یک ادیتور هست که  کد پایتون را کامپایل میکند به روش زیر عمل میکنیم(نصب در دبیان9)
    نکته: از لینک آخر این دایکومنت برای نصب در توزیع‌های دیگر نیز میتوانید استفاده نمایید

    گام اول: بارگردن آدرس  URL

    گام دوم: instal this package

    گام سوم: select opration sysstem

    گام چهارم:  select server to download

    گام پنجم:

    sudo apt-get install pycharm-community-sloppy



    • behrooz mohamadi nsasab
    ۱۳
    خرداد
    اسکرین برای بوجود آوردن چند session  در bash کاربرد دارد اگر بخواهیم از یک ترمینال جندین ترمینال مشتق شود بطوری که هرکدام مستقلا باشند و درصورت بسته شدن آنها(detach)، کارشان مختل نشود، از screen  استفاده میکنیم:
    نکته : تقریبا در تمامی دستورات اسکرین از دستور کلید ترکیبی ctrl به همراه a  به همراه کلید دیگری استفاده میشود.
    برای ایجاد یک اسکرین از دستور زیر استفاده می‌شود(در بش اصلی):
    sudo apt-get install screen
    sudo yum install screen

    screen -S NAME
    برای برگشتن به bash  اصلی(detach شدن اسکرین ایجاد شده که در آن بودیم-این دستور را باید در محیط اسکرین بزنیم):
    ctrl+a, And d
     برای دیدن تمامی سشن های باز از اسکرین(در بش اصلی):
    screen -ls

    برای رفتن به یک اسکرین دلخواه(در بش اصلی)(reattach):
    screen -r NAME
    screen -x  NAME

    کشتن یک اسکرین(در بش اصلی):
    screen -S NAME -X quit
    کشتن یک اسکرین(در محیط اسکرین):
    ctrl+d
    رفتن به اسکرین بعدی(در محیط اسکرین)
    ctrl+a, And n
    رفتن به اسکرین قبلی(در محیط اسکرین)
    ctrl+a, And p
    نمایش تمام اسکرین های باز(در محیط اسکرین)
    ctrl+a, And "
    رفتن به اسکرین شماره خاص(در محیط اسکرین)
    ctrl+a, And 0-9
     
     

        Ctrl+a " to visualize the opened windows
        Ctrl+a p and Ctrl+a n to switch with the previous/next window
        Ctrl+a number to switch to the window number
        Ctrl+d to kill a window
        screen -ls to list the sessions and their status
        screen -S session_name to start a session with a given name. The name should be unique
        Ctrl+a d to detach a session
        screen -x session_name to resume (reattach) a session knowing its name
        screen -S session_name -X quit to terminate a detached session
     
    Layout:
        Ctrl+a S to split horizontally
        Ctrl+a | to split vertically
        Ctrl+a <Tab> to switch to the next region
        Ctrl+a X to close the current region
        Ctrl+a Q to close all the regions but the current one

       URL1
       URL2
       URL3

    • behrooz mohamadi nsasab
    ۱۲
    خرداد

    افزودن دیسک local برای گرفتن بسته‌ها:

    برنامه apt-cdrom را نصب کنید و مطابق ریر، مسیر mount point دیسک را اضافه نمایید(همچنین میتوانید keydrive یک USBرا اضافه نمایید).

    apt-cdrom add directory
    • behrooz mohamadi nsasab
    ۲۴
    ارديبهشت
    مشاهده اطلاعاتی نظیر رم و هارد و سریال پورت و یو اس بی
    dmesg | grep -E "memory|dma|usb|tty"



    پاک کردن پیغام های موجود برای دوری از شلوغی خروجی:
    dmesg -C



     مشاهده خروجی بصورت رنگ بندی شده به جهت وضوح بیشتر
    dmseg  -L



    تنها یک سطح خاص از مطالب را نمایش بدهد(emerg,alert, crit, err, warn,notice,info,debug)
    dmesg --level=err,warn



    نمایش تایم در لاگ
    dmesg -T
    dmesg -Tx



    بصورت real time  لاگ‌ها را مشاهده نمایید
    dmesg --follow



    مشاهده پیغام های بافر شده(لاگ کارهایی که هنوز مانده است تا انجام بشود و خروجی عمل به مرحله ظهور نرسیده است)
    dmesg -r  #raw message buffer



    اگر بخواهیم برنامه dmesg را اجبار کنیم که از فایل های syslog هم بخواند(مثلا فایل /dev/kmsg. را هم بخواند)
    dmesg -S


    نکته: دستورات dmesg از فایل “/var/log/dmesg”  خوانده میشود.
    • behrooz mohamadi nsasab
    ۱۰
    ارديبهشت

    از طریق دستورات زیر میتوانیدتمامی خروجی شل های یک سرور را مشاهده نمایید:

    باید دستورات زیر را در آخر bashrc یوزر خود بیافزایید.


    export PS1="\u@\h[\t] [\w]-[\$?]\$ "

    if [ "$SHLVL" = 1 ]; then /usr/bin/script   -afq /var/log/Terminal/Terminal_$(date +%Y%m%d-%H%M%S).log;  fi;

    • behrooz mohamadi nsasab
    ۱۰
    ارديبهشت
    برای تغییر سرخط در لینوکس از دستور زیر در bashrc ویا در profile قرار دهید(لینک):
    /t   :     time
    /$? :     exit code
    /u   :     user
    \h   :     hostname
    \$   :     $ or #

    export PS1="\u@\h[\t] [\w]-[\$?]\$ "
    behrooz@viratech[14:54:04] [~]-[0]$




    • behrooz mohamadi nsasab
    ۰۶
    فروردين

    فهمیدن مک یک آی پی :

    ./VMware.bundle -u"vmware-workstation"

    نمایش مک‌آدرس‌ها

    sudo arp -a
    اسکن مک آدرس یک آی پی
    sudo arp-scan 192.168.1.0/24

    نمایش اطلاعات بسته ها:

    dpkg -l
    بررسی وجود یک ریشه در لینوکس:
    test -d /home/zabbix || mkdir /home/zabbix

    فهمیدن اینکه سرور فعلی vm هست یا سرور فیزیکی هست:

     
    dmidecode -t system
     
    $printf '\033[;H'            #Move text pointer at first line
    • behrooz mohamadi nsasab
    ۰۵
    فروردين
    برنامه at به برنامه زمانبندی (schedule) در لینوکس است که برای استفاده از آن باید این برنامه را نصب نماییم
    sudo apt-get install at
    برای شروع به کار(اعلام زمان اجرای یک تسک) دستور زیر را وارد میکنیم:

    at 09:01 AM 07/20/2018
    سپس وارد محیطی میشویم که باید در آن دستورات تسک را وارد نماییم.سپس ctrl+D را می‌زنیم و از محیط دستورات خارج می‌شویم

    مثلا اگر دستور زیر یک ایمیل ارسال می‌کند:
    echo "TEXTBODY" | mail -s "SUBJECT"MailAddress1 MailAddress2 MailAddress3
    آنگاه اگر یخواهیم در زمان 20181225 ایمیلی ارسال بشود از روش زیر اقدام میکنیم:
    behrooz@Home:~$  at 09:01 AM 12/25/2018
    > echo "یادآوری" | mail -s "عنوان" mohamadinasab@viratech.ir behroozmohammadinasab@gmail.com
    ctrl+D
    behrooz@Home:~$
    لینک مفید:  URL

    • behrooz mohamadi nsasab
    ۰۵
    فروردين
    فهمیدن IP از نوع Public‌:
    alias B_ipPublic='echo -e "192.168.2.203===>$(curl --interface 192.168.2.203 -s http://ip.jsontest.com|jq .ip |tr -d "\"")'  #dependency: jq, curl
    alias B_ipPublic='curl -s ifconfig.me'
    دریافت آی پی یک اینرفیس(آی پی لوکالی):
    alias B_ipPrivate='ip addr list dev eth0'
    اس اس اچ به یک آدرس:

    alias ssh_LfreeNas='sshpass -p PASSWORD ssh USER@IP'    #dependency: sshpass

    دیوایس های متصل به سیستم

    alias B_mount="mount | column -t"

    پاک کردن با تایید اگر بیش از سه فایل داریم پاک می‌کنیم(do not delete / or prompt if deleting more than 3 files at a time)


    alias rm='rm -I --preserve-root'

    جلوگیری از این که در مسیر اصلی / تغییری (بصورت بازگشتی) انجام دهیم

    alias chown='chown --preserve-root'    # Parenting changing perms on /
    alias chmod='chmod --preserve-root'    # Parenting changing perms on /
    alias chgrp='chgrp --preserve-root'       # Parenting changing perms on /

    بازگشت به مسیر بالاتر:


    alias ..='cd ..'

    alias ...='cd ../..'

    alias ....='cd ../../..'

    جستجوی یک پردازه در لبست تمامی پردازه‌ها (نیاز به آرگومان ورودی که آن را جستجو نماید)

    alias ps?="ps aux | grep"

    تولید پسورد رندم:

    alias B_genPasswd="strings /dev/urandom | grep -o '[[:alnum:]]' | head -n 30 | tr -d '\n'; echo"

    نمایش صفحه نمایش بصورت جالب(funny)

    alias B_busy="cat /dev/urandom | hexdump -C | grep \"ca fe\""

    مشاهده لاگ

    alias B_logDmesg='sudo dmesg -Tx  --follow'

    alias B_logSyslog='sudo tail -n 25 -f /var/log/syslog'

    گرفتن تایید:

    alias mv='mv -i'
    alias cp='cp -i'
    alias ln='ln -i'

    الیاس‌ های رایج:

    alias ls="ls --color=auto"

    alias ll="ls --color -al"

    alias grep='grep --color=auto'

    چند تابع کاربردی که میتوان بعنوان الیاس از آن استفاده کرد:

    mcd() { mkdir -p "$1"; cd "$1";}

    cls() { cd "$1"; ls;}

    B_backup () { _time=$(date +%Y%m%d-%H%M%S) ;  cp "$1"{,.bak_$_time}; }


    نکته : alias های زیر از سایت URL برگرفته شده است و هیچ ضمانتی برای اجرای آن نیست:

    extract() { 
        if [ -f $1 ] ; then 
          case $1 in 
            *.tar.bz2)   tar xjf $1     ;; 
            *.tar.gz)    tar xzf $1     ;; 
            *.bz2)       bunzip2 $1     ;; 
            *.rar)       unrar e $1     ;; 
            *.gz)        gunzip $1      ;; 
            *.tar)       tar xf $1      ;; 
            *.tbz2)      tar xjf $1     ;; 
            *.tgz)       tar xzf $1     ;; 
            *.zip)       unzip $1       ;; 
            *.Z)         uncompress $1  ;; 
            *.7z)        7z x $1        ;; 
            *)     echo "'$1' cannot be extracted via extract()" ;; 
             esac 
         else 
             echo "'$1' is not a valid file" 
         fi 
    } 
     
    #System info 
    alias tree="ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/   /' -e 's/-/|/'" 
    sbs(){ du -b --max-depth 1 | sort -nr | perl -pe 's{([0-9]+)}{sprintf "%.1f%s", $1>=2**30? ($1/2**30, "G"): $1>=2**20? ($1/2**20, "M"): $1>=2**10? ($1/2**10, "K"): ($1, "")}e';} 
    alias intercept="sudo strace -ff -e trace=write -e write=1,2 -p" 
    alias meminfo='free -m -l -t' 
    alias volume="amixer get Master | sed '1,4 d' | cut -d [ -f 2 | cut -d ] -f 1" 
     
    #Network 
    alias websiteget="wget --random-wait -r -p -e robots=off -U mozilla" 
    alias listen="lsof -P -i -n" 
    alias port='netstat -tulanp'
    gmail() { curl -u "$1" --silent "https://mail.google.com/mail/feed/atom" | sed -e 's/<\/fullcount.*/\n/' | sed -e 's/.*fullcount>//'}
    alias ipinfo="curl ifconfig.me && curl ifconfig.me/host" 
    getlocation() { lynx -dump http://www.ip-adress.com/ip_tracer/?QRY=$1|grep address|egrep 'city|state|country'|awk '{print $3,$4,$5,$6,$7,$8}'|sed 's\ip address flag \\'|sed 's\My\\';} 
     
    #Funny 
    kernelgraph() { lsmod | perl -e 'print "digraph \"lsmod\" {";<>;while(<>){@_=split/\s+/; print "\"$_[0]\" -> \"$_\"\n" for split/,/,$_[3]}print "}"' | dot -Tpng | display -;} 
    
    • behrooz mohamadi nsasab
    ۰۵
    فروردين

    برنامه ufw فایروالی است که به حالت سرویس به اجرا درآمده و بسته های ورودی و خروجی را فیلتر می‌نماید.

    استفاده از آی پی ورژن6

    # sudo vim /etc/default/ufw

    IPV6=yes

    فعال‌ سازی/غیرفعال سازی

    # sudo ufw enable/disable

    بررسی وضعیت موجود

    # sudo ufw status

    # sudo ufw status numbered

    بررسی وضعیت موجود(جزییات بیشتر)

    # sudo ufw status verbose

    نمایش رول‌ها

    # sudo ufw status numbered
    Numbered Output:
    Status: active To Action From
    -- ------ ----
    [1] 22 ALLOW IN 15.15.15.0/24
    [2] 80 ALLOW IN Anywhere

    حذف رول‌های موجود(شماره [2 ])

    # sudo ufw delete 2

    # sudo ufw delete allow http

    # sudo ufw delete allow 80

    تغییر در پالیسی پیش‌فرض ورودی یا خروجی

    # sudo ufw default deny incoming

    # sudo ufw default allow outgoing

    بازگشت به حالت اولیه-فایروال غیرفعال گشته و قوانین حذف خواهند شد (نکته پالیسی‌های پیشفرض ورودی و خروجی تغییر نخواهد کرد)

    # sudo ufw reset

    باز بودن تمام دسترسی از یک آدرس آی پی خاص

    # sudo ufw allow from 15.15.15.51
    باز شدن یک دامنه(از 15.15.15.1 تا 15.15.15.254)
    # sudo ufw allow from 15.15.15.0/24

    باز شدن دسترسی از هاست 15.15.15.51 به پورت 22 سرور

    # sudo ufw allow from 15.15.15.51    to any port 22
    باز شدن دسترسی از یک دامنه به پورت 22 سرور
    # sudo ufw allow from 15.15.15.0/24 to any port 22
    باز شدن پورت 80 برای همه آی‌پی‌ها در اینترفیس etj0
    # sudo ufw allow in on eth0 to any port 80

    باز کردن یک پورت

    # sudo ufw allow PORT

    # sudo ufw allow PORT/tcp

    باز کردن یک بازه پورت

    # sudo ufw allow 6000:6007/tcp

    باز شدن پورت ssh

    # sudo ufw allow ssh

    # sudo ufw allow 22

    بسته شدن پورت پروتکل اف تی پی

    # sudo ufw allow ftp

    ریست تمام رول‌ها  به حالت اولیه:

    # sudo ufw reset

     

    UFW

    • behrooz mohamadi nsasab
    ۰۳
    اسفند

    Write speed benchmark:    dd if=/dev/zero of=/tmp/output count=1 bs=100M ;rm -f /tmp/output

    READ speed benchmark: sudo hdparm -t /dev/sda

    • behrooz mohamadi nsasab
    ۰۳
    اسفند
    در این آموزش می‌خواهیم هارد سرور 192.168.200.3 را به کلاینت 192.168.200.2 بعنوان پارتیشن لوکالی معرفی نماییم.
    نیازمندی:
    در سرور: نصب بسته  nfs-kernel-server
    در کلاینت :‌نصب بسته  nfs-common

    در سرور (192.168.200.3):
    1-$ sudo apt-get update
    2-$ sudo apt-get install nfs-common
    3- create one DIRECTORY to share
    4- sudo chown nobody:nogroup DIRECTORY
    5- sudo nano /etc/exports
    6- DIRECTORY       192.168.200.2(rw,sync,no_root_squash,no_subtree_check)
    directory_to_share       client(share_option1,...,share_optionN)
    7- sudo exportfs -a
    8- sudo service nfs-kernel-server start



    در کلاینت (192.168.200.2)
    1- sudo apt-get update
    2- sudo apt-get install nfs-common
    3-create MountPoint
    4- sudo mount 192.168.200.3:DIRECTORY    #Directory on server 192.168.200.3
    5- df -h
    6- sudo mount -a
    for permanently mount:
    7-vim /etc/fstab
    8- 192.168.200.3:DIRECTORY    MountPoint   nfs auto,noatime,nolock,bg,nfsvers=4,intr,tcp,actimeo=1800 0 0

    LINK
    • behrooz mohamadi nsasab
    ۱۶
    بهمن

    sudo nmblookup -A  IP | grep '<00' | grep -v GROUP | awk '{print $1}'

    • behrooz mohamadi nsasab
    ۱۶
    بهمن

    با دستور زیر میتوان کلمات را درون فایل جایگزین نماید

    sudo sed -i 's/OLD/NEW/g' FILENAME

    عبارت اول  یا عبارت دوم:

    sudo sed -i 's/OLD|accent/NEW/g' FILENAME

    حذف کاراکترهای اضافی مخفی (نظیر برنامه dos2unix)

    # sed -i 's/\r//' myfile.txt

    گرفتن بک آپ و بعد تغییر در فایل(بادستور زیر یک فایل با پسوند orig میسازد و سپس تغییرات را انجام میدهد-در این حالت دو فایل داریم)

    sed -i'.orig' 's/this/that/gi' myfile.txt

    نمای خطی که در آن کلمه   word آمده باشد

    sed -n '/WORD/p'

    تبدیل چند تا اسپیس به یک اسپیس در متن

    sed -e 's/  */ /g' فایل

    حذف خطی که در آن کلمه word  یافت شود(i  برای این است که در فایل تغییر کند-اگر نباشد تغییر در فایل رخ نداده و فقط در خروجی مشاهده خواهد شد)

    sed -i '/WORD/d' فایل

    پاک کردن خط اول

    sed '1d' test

    • $ sed '3d' file #Delete 3rd line 
    • $ sed '$d' file #Delete the last line
    • $ sed '2,4d' file # Delete a range of lines(from 2nd line till 4th line)
    • $ sed '2,4!d' file #Delete lines other than the specified range, line other than 2nd till 4th here-پاک کردن همه خطوط بجز خطوط ذکر شده
    • $ sed '1d;$d' file #Delete the first line AND the last line of a file
    • $ sed '/^L/d' file #Delete all lines beginning with a particular character: 'L'  
    • $ sed '/x$/d' file #Delete all lines ending with a particular character, 'x' حرف مورد نظر
    • $ sed '/[xX]$/d' file #Delete all lines ending with either x or X,  i.e case-insensitive delete
    • $ sed '/^$/d' file #Delete all blank lines in the file
    • $ sed '/^ *$/d' file #Delete all lines which are empty or which contains just some blank spaces
    • $ sed '/^[A-Z]*$/d' file #Delete all lines which are entirely in capital letters:
    • $ sed '/Unix/d' file # Delete the lines containing the pattern 'Unix'
    • $ sed '/Unix/!d' file #Delete the lines NOT containing the pattern 'Unix'
    • $ sed '/Unix\|Linux/d' file #Delete the lines containing the pattern 'Unix' OR 'Linux'
    • $ sed '1,/Linux/d' file #Delete the lines starting from the 1st line till encountering the pattern 'Linux'
    • $ sed '/Linux/,$d' file # Delete the lines starting from the pattern 'Linux' till the last line
    • $ sed '${/AIX/d;}' file #Delete the last line ONLY if it contains the pattern 'AIX'
    • $ sed '${/AIX\|HPUX/d;}' file #Delete the last line ONLY if it contains either the pattern 'AIX' or 'HPUX'
    • $ sed '1,4{/Solaris/d;}' file #Delete the lines containing the pattern 'Solaris' only if it is present in the lines from 1 to 4
    • $ sed '/Unix/{N;d;}' file #Delete the line containing the pattern 'Unix' and also the next line
    • $ sed '/Unix/{N;s/\n.*//;}' file #Delete only the next line containing the pattern 'Unix', not the very line
    • $ sed -n '/Linux/{s/.*//;x;d;};x;p;${x;p;}' file | sed '/^$/d' #Delete the line containing the pattern 'Linux', also the line before the pattern
    • $  sed -n '/Linux/{x;d;};1h;1!{x;p;};${x;p;}' file #Delete only the line prior to the line containing the pattern  'Linux', not the very line
    • $ sed -n '/Linux/{N;s/.*//;x;d;};x;p;${x;p;}' file | sed '/^$/d' #Delete the line containing the pattern 'Linux', the line before, the line after

    • behrooz mohamadi nsasab
    ۱۶
    بهمن

    اگر بخواهیم در سرور لاگ تولید شود و به مسیر

    /var/log/message.log

    برور میتوان از دستور زیر استفاده کرد

    /usr/bin/logger -t TILE  "متن"


    همچنین با نصب برنامه lnav می‌توان لاگهای سرور را به راحتی مشاهده کرد:

    sudo apt-get install lnav

    sudo lnav /var/log

    همچنین اگر بخواهیم بصورت دستی در مسیری دلخواه لاگ تولید کنیم می‌توانیم از تابع زیر استفاده نماییم

    print_log () {
        MESSAGE=$1                                                             # Title for log

        TIME=$(date +%Y/%m/%d-%H:%M:%S)                      # Get Tile

        echo "$TIME ---- $MESSAGE" >> مسیرنگهداری لاگها          # Add log message to file

    }

    • behrooz mohamadi nsasab
    ۰۳
    آذر

    Examples

    $ grep    Expression File.txt

    Search in file

    $ grep    [ -F, --fixed-strings]    Expression File.txt

    grep -F = fgrep

    list of fixed string PATTERN (instead of regular expressions),

    separated by newlines(any  of  which  is  to  be matched)

    $ grep –E “……”

    هر چیز شش حرفی(اگر بیشتر هم شد اشکال ندارد فقط شش تا باشد)

    $ cat فایل |grep  -e Expression1 -e Expression2

    search Multi pattern

    $ grep     -E   Expression   =   egrep     Expression
    both is equal
    $ grep ^Expression file
    start with Expression
    $ grep [0-9] file
    All lines have number
    $ grep Expression -R Directory
    Search in all files in Directory looking for pattern

    Switch

    [-n, --line-number] #Show line number
    [-i, --ignore-case               #Ignore case distinctions in  both  the  PATTERN  and  the  input files.
    ]

    • behrooz mohamadi nsasab
    ۰۳
    آذر

    با استفاده از این دستور  می توان در کل فایل سیستم به دنبال فایلی گشت . این دستور برای خود یک دیتابیس دارد که مسیر تمامی فایل ها و دایرکتوری ها را در خود دارد , طبیعتا اگر فایلی یا دایرکتوری ای به فایل سیستم اضافه شود دیگر با استفاده از این دستور پیدا نمی شود چرا که آدرس آن درون دیتابیس وجود ندارد
    جستجوی سریع و کامل، برخلاف find که کند است و جهت مطابقت یکی یکی فایلها چک میکند،
    دستور locate اطلاعات را از درون یک database که بصورت ofline است میخواند و مطابقت هارا از درون آن رکوردهای دیتابیس چک میکند
    معمولا آپدیت شدن دیتابیس روزی یکبار انجام میشود و معمولا با دستورهای برنامه crown به اجرا درمی آید.

    جستجوی کامل فایل سیستم جهت بروز رسانی database

    updatedb

    جستجوی فایل

    locate     نام فایل

    دیدن فایلهای دیتابیس

    locate     -S

    تنظیمات جستجوی دیتابیس در این فایل است

    /etc/updated.conf

    • behrooz mohamadi nsasab
    ۰۳
    آذر

     hibernate
    نکته: دستور زیر ممکن است در توزیع‌های متنوع لینوکس متفاوت باشد.
    با دستور زیر سیستم به حالت Hibernate خواهد رفت

    # pm-hibernate

    افزودن منوی hibernate به سیستم عامل Ubuntu

    ابتدا یک فایل در مسیر زیر ایجادکرده و محتویات ذیل را درون آن قرار دهید:

    /etc/polkit-1/localauthority/10-vendor.d/com.ubuntu.desktop.pkla

    محتویات داخل فایل:

    [Enable hibernate by default in upower]
    Identity=unix-user:*
    Action=org.freedesktop.upower.hibernate
    ResultActive=yes

    [Enable hibernate by default in logind]
    Identity=unix-user:*
    Action=org.freedesktop.login1.hibernate;org.freedesktop.login1.handle-hibernate-key;org.freedesktop.login1;org.freedesktop.login1.hibernate-multiple-sessions;org.freedesktop.login1.hibernate-ignore-inhibit
    ResultActive=yes

    • behrooz mohamadi nsasab
    ۱۴
    مهر
    حالت‌های Run Level
    سیستم عامل می تواند تنها در هفت حالت زیر باشد که به آنها ران لول می‌گویند:
    0. Halt Mode :حالت توقف سیستم
    1. single User Mode :حالت خط فرمان یا همان Command Line
    2. Debian/Ubuntu Default :تمام شرایط Normal بوده و تنها تفاوت درLoad شدن بدون نمای گرافیکی است
    3. RHEL/fedora/suse):Text Mode
    4. Free : رزرو شده، خالی
    5. RHEL/fedora/suse : Graphical Mode -تمام شرایط Normal بوده و نمای گرافیکی نیز  Load می شود.
    6. Reboot


    نمایش وضعیت Run level کنونی سیستم
    # runlevel
    خروجی(به معنی runlevel  شماره 5):
    N 5






    • behrooz mohamadi nsasab
    ۱۴
    مهر

    از امکانات مهمی که GRUB  ارائه می دهد ارائه رمز عبور، امکان ارسال پارامترهای Boot به کرنل، همچنین انجام اینکار بدون هنگ کردن و بروز مشکل برای فایل‌های تنظیماتی GRUB، امکان Boot   سیستم عامل ویندوز در کنار سیستم عامل لینوکس است. همچنین GRUB  تکنولوژی LBA یا Logical Block Addressing را پشتیبانی می‌کندکه  امکان دستیابی I/O  فایلهای بوت را بصورت ساده مهیا میکند. GRUB توانایی بوت کردن سیستم عامل در شبکه را نیز دارد.
    در زمان بروز خطا، LILO بایستی مجددا نصب شود تا بتواند MBR را تعمیر کند،  اماGRUB آن را در حالت خط فرمان درآورده تا بصورت دستی یا خودکار تنظیمات تعمیر بشود.
    GRUB دارای پیچیدگی های بیشتری نسبت به LILO است. Grub برای سیستم عامل های مختلف قابل استفاده است اما LILO برای سیستم عامل های محدودی قابل استفاده است.

    نکته: قبل از  بالا آمدن سیتم عامل در منوی Grub باز فشردن دکمه `e` میتوان به تنظیمات grub راه یافت.
    نکته:در زمان نمایش منوی Grub سیستم عامل پیشفرض بعد از گذشت زمان 10 یا 30 ثانیه بصورت خودکار انتخاب خواهد.


    Chan Load
    زمانی که Boot Loader های سیستم عاملها یکدیگر را Load کنند، این تعریف معنا پیدا خواهد کرد.




    تنظیم پارامترهای اولیه LILO

    # /usr/sbin/liloconfig

    نصب Grub

    # grub-install /dev/sda

    تعمیر ونصب مجدد Grub2 درMBR  قراردادن آن در فایل تنظیمات اصلی Grub2 به آدرس زیر 3:

    # grub-mkconfig > /boot/grub/grub.cfg

    تنظیمات grub2 در مسیرزیر قراردارد.

    /boot/grub/grub.cfg

    تنظیماتgrub  در مسیرزیر قراردارد.

    /boot/grub/menu.lst

    تنظیمات LILO در مسیرزیر قراردارد.

    /etc/lilo.conf

    initrd در مسیر زیر قراردارد

    /boot/initrd. . . . img

    معرفی پارامترهای تنظیماتی
    در تنظیمات Grub ویا در صفحه منوی Grub برخی از پارامترها بصورت زیر میباشد.

    Default

    این پارامتر سیستم عامل پیشفرض را که پس از گذشت زمان 10 ثانیه می بایست Load بشود را تنظیم میکند.را Load میکندdefault=2 یعنی سیستم عامل دوم در منوی سیستم عامل های Grub 2
    نکته: اندیس در Grub1 از صفر شروع می شود، ولی در Grub2 از یک شروع میشود.

    splashimage=(hd0,5) /boot/grub/splash.xpm.gz

    نمایش عکس زمینه گرافیکی در آدرس تعریف شده (هارد اول، پارتیشن پنجم و آدرس موردنظر )

    Splash

    عکس پس زمینه

    Title

    عنوان نمایش گراب

    root (hd0,5)

    مسیر روت را مشخص مینماید که درکدام پارتیشن است

    kernel /boot/vmlinuz-2.6.26.8.125 ro quite

    در منوی Grub در لحظه شروع با فشردن F10 کرنل  به آدرس بالا Load خواهد شد.

    Quite: بجای نمایش خط ها صفحه گرافیکی نمایش داده شود در لحظه بوت شدن و بالا آمدن کرنل
    ro:فقط خواندنی

    در آخر این خط اگر کاراکتر عدد1 ویا s  باشد، سیستم عامل در محیط Run level تک کاربره (Single user) Load خواهد شد.

    Save default

    بخاطر سپردن انتخاب قبل
    نکته: در فایل تنظیماتی گراب  اگر تنظیمات گراب را به شکل زیر تغییر دهید سیستم با محیط bash  بالا خواهد آمد:

    init=/bin/sh

    نکته: در تنظیمات Grub در خطی که با عبارت Vmlinuz یاkernel آغاز میشوداگر ورودی پارامتر Runlevel  را کاراکتر S 1 یا عدد 1 گذارید سیستم در حالت متن فرمان بوت خواهد شد.

    • behrooz mohamadi nsasab
    ۱۴
    مهر

    برنامه که بوسیله آن سیستم عامل در حافظه اصلیload شده و به اجرا در می‌آید

    .یک boot loader میتواند چندین سیستم عامل را Boot کند.(منظور بطور همزمان نیست)
    Boot Loader مسئولیت Load  کردن kernel  و دادن کنترل سیستم به آن را دارد.

    پس از بدست گرفتن کنترل سیستم توسط کرنل، سایر قسمتهای باقی مانده سیستم عامل بارگذاری شده وبه اجرا درمی‌آیند.
    درحین بوت سیستم، BIOS  قطعه برنامه  Boot Loader  را از داخلMBR به حافظه اصلی (RAM) منتقل می کند.بعد ا ز انتخاب یکی از سیستم عامل های  منوی Boot Loader ، کرنل توسط Boot Loader به داخل RAM منتقل شده و سپس کرنل موجود در Ram نیز برنامه Init را Run میکند و در این هنگام است که کنترل سیستم تحت فرمان کرنل بوده و در هنگام نیاز برنامه Init دیگر برنامه‌ها را به اجرا در خواهد آورد.

    سابقه Boot Loader های لینوکس به LILO 1 برمی‌گردد که با ظهور Grub2 نقش LILO کم‌رنگ شد و در  حال حاضر Boot Loader اصلی سیستم عامل لینوکس Grub است.

    • behrooz mohamadi nsasab
    ۱۴
    مهر

    Init

    مخفف Initialize  بوده و اولین پردازشی است که موجب می شوددیگر پردازش هاLoad  شده تا سیستم عامل  بصورت کامل Load بشود.

    در تکنولوژی جدید،  بجای init از systemd  و یا در برخی موارد از upstart استفاده می شود.


    Upstart

    نسبت به Inti امکانات بیشتری داشته و درآن نواقص Init برطرف شده است.

    Init با مشخصه path سرویس ها را start ویا Stop می کند ولی Upstart بر اساس Event (رویداد) سرویس را Start مینماید، همچنین لزوماً نیازمند مسیر نیست. یعنی با یک رویداد (همان event) یک سرویس به اجرا در خواهد آمد.

    Upstart بصورت بهینه Dependency ها را تشخیص داده و پیش نیازهای یک سرویس قابل اجرا را قبل تر به اجرا در خواهد آورد.


    Systemd(System Deamon)

    سرویس ها بر اساس Port (سوکت) شناخته شده و به اجرا درآورده می‌شوند.

    این تکنولوژی قابلیت به اجرا درآوردن تمام یا بخشی از یک سرویس را دارد، بطوریکه بخش خاص، یا قسمتی از یک سرویس درخواست داده شده Run بشود.

    Systemd هر جزء را (Port ویا Device ویا service و ..) در قالب یک Unit  درنظر میگیرد و میتواند برای هر Unit خاص با UUID منحصر بفرد خود وارد عمل شود.

    • behrooz mohamadi nsasab
    ۱۴
    مهر

    مرکز اصلی سیستم عامل با حجم بسیار کوچک است که مدیریت کلی سیستم عامل را برعهده داشته و بصورت مستقیم با سخت‌افزار در ارتباط است.

    کرنل وظیفه مدیریت سخت‌افزار و تخصیص منابع و حافظه, فایل ها و اجزای جانبی را دارد. همچنین آغازگر برنامه‌های کاربردی می باشد.

     Kernel مستقیما با سخت افزار در ارتباط بوده و I/O Management  و Process  Management و Device  Management و  File  Management و Memory  Management را انجام میدهد.

    به بیان دیگر  هر Application یا برنامه کاربردی بر روی سیستم عامل برای ارتباط با سخت‌افزار نیازمند رابطی است که این رابط را کرنل برقرار میکند

    • behrooz mohamadi nsasab
    ۲۴
    شهریور
    نمایش تقویم (ماه کنونی)
    cal

    نمایش سه ماه قبل , جاری , و بعد
    cal -3

    نمایش 12 ماه سال جاری
    cal -y

    نمایش 12 ماه سال مورد نظر
    cal 2005

    نمایش تقویم فارسی (باید قبلاً نصب کنیم تا دستور اجرا شود)
    jcal

    نمایش سه ماه از تقویم فارسی(ماه قبل و ماه بعد)
    jcal -3


    • behrooz mohamadi nsasab
    ۲۴
    شهریور

    برای تعیین سطح دسترسی، اجازه داشتن و یا اجازه نداشتن، از فایل های زیر استفاده نمایید:

    /etc/cron.allow

    /etc/cron.deny

    و نیز:

    /etc/at.allow

    /etc/at.deny

    برای تعیین مجوز این فایل‌ها را بسازید.(پیشفرض وجود ندارند)

    Allow:ONLY users mentioned in this file are allowed to run this service. All other users will be denied
    Deny: Everybody can use the service except the users mentione


    • behrooz mohamadi nsasab
    ۲۴
    شهریور

    گاهی پیش می‌آید که یک یوزر بنا بر نیاز، دستور را با مالکیت یوزر خود اجرا نماید.

    در این صورت باید با یکی از روش های زیر عمل نماید:


    ۱− باید در داخل یوزر خود لاگین نموده و از دستور زیر برای زمان گذاری اقدام نماید

    crontab -e

    ۲− فایل زیر را با یک ادیتور باز کرده

    vim /etc/crontab

    و با فرمت زیر

    m  h  dom mon dow  USER    command and arguments

    برای زمان گذاری اقدام نماید


    ۳− در مسیر زیر

    /etc/cron.d/

    یک فایل ایجاد کرده و با فرمت

    m  h  dom mon dow  USER    command and arguments

    برای زمان گذاری اقدام نماید


    ۴−

    • behrooz mohamadi nsasab
    ۲۴
    شهریور

    اجرای یک دستور تنها یکبار

    برنامه‌ریزی یک دستور در یک دقیقه بعد

    at now + 1 min


    برنامه‌ریزی یک دستور در روز بعد در زمان اکنون

    at tomorrow


    نکته:باید برای خروج ctrl+d رابفشرید

    نکته:دستورات در شل بنام sh اجرا خواهند شدیعنیbin/sh/
    مشاهده تمام کارهای موجود در صف انتظار

    atq


    حذف یک کار موجود در صف انتظار برحسب شماره آن

    atrm 3

    • behrooz mohamadi nsasab