لینوکس و شبکه

لینوکس و شبکه
طبقه بندی موضوعی
آخرین مطالب
  • ۹۸/۱۲/۱۴
    bond
  • ۹۸/۱۰/۲۰
    GIT
  • ۹۸/۱۰/۱۴
    DISK

۵۳ مطلب با موضوع «AdministrativeCommands» ثبت شده است

۰۲
شهریور

نصب برنامه‌های زیر:

sudo apt install tor torsocks

استفاده به دو حالت زیر:

1-Temporary:
     torsocks COMMAND 
Example:
     curl https://showip.net

 

2-Permanent over shell
     . torsocks  on
Example
     curl https://showip.net

با استفاده از هر دو روش بالا موجب خواهد شد که آی پی حقیقی شما در پس یک آی پی دیگر مخفی شود.

 

 

  • behrooz mohamadi nsasab
۱۱
خرداد

برای نمایش وضعیت یک پردازه بکار می‌رود. مثلاْ آگاهی از برخی پارامتر‌های یک عمل کپی در حین اجرا. مثلا:

  • مقدار زمان گذشته و زمان واقعی صرف شده بین شروع و پایان 
  • درصد انجام کار (همچنین یک پروسس بار نمایش می‌دهد)
  • مقدار نرخ throughput
  • مقدار دیتای ارسال شده
  • تخمین زمان پایان

نصب:

# sudo yum install pv
# sudo apt install pv 

 

کپی یک فایل درون فولدر Download :

# pv CentOS7.iso > Downloads/centos.iso

 

 

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

$ pv -L 2m CentOS7.iso > Downloads/centos.iso    # limitation 2MB per second

 

 

درصورتی که چندین فایل موجود باید میتوانیم توسط دستور زیر از آنها فایل آرشیو بسازیم

# tar c Notebooks/ | pv | tar x -C Documents/

 

ایجاد یک فایل آرشیو

# pv CentOS7.iso | zip > centos.zip

 

استفاده بین ورودی و خروجی دستور dd

# dd if=CentOS7.iso | pv | dd of=Downloads/centos7.iso

 

 

نمایش دیالوگ باکس در حین ایجاد یک فایل آرشیو

tar -czf - Official/ | (pv -n > mybackup.tgz) 2>&1 | dialog --gauge "Compressing files, please wait..." 10 70 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

URL

 

 

 

 

 

 

  • behrooz mohamadi nsasab
۱۴
اسفند

اگر جندین کارت شبکه را به جهت افزایش troughtPut و bandwidth به هم پیوند بدهیم و در نتیجه خروجی حاصله برابر جمع پهنای باندها(هریک به تنهایی) بشود در این صورت از تکنیک bond استفاده شده است:

 

 

 

modprobe bonding
ifconfig eth0 down
ifconfig eth1 down
ifconfig bond0 up
ifenslave bond0 eth0 eth1
ifconfig bond0 192.168.0.1 netmask 255.255.255.0
ifconfig eth0 up
ifconfig eth1 up
----------------------------------------
# ip link add bond0 type bond
# ip link set bond0 type bond miimon 100 mode active-backup
# ip link set em1 down
# ip link set em1 master bond0
# ip link set em2 down
# ip link set em2 master bond0
# ip link set bond0 up

URL1

URL2

URL3

  • 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
    ۱۴
    دی

    Check the number of attached disks

    # cat /proc/scsi/scsi | egrep -i 'Host:' | wc -l
    7

    verify Using /sys class file

    (- - -)

    $ echo "- - -" >  /sys/class/scsi_host/host0/scan
    #("- - -") of the command act as wildcards meaning rescan everything​​
    

    (c t l)

    $ echo "c t l" >  /sys/class/scsi_host/hosth/scan 
    # h is the HBA number
    # c is the channel on the HBA
    # t is the SCSI target ID
    # l is the LUN.
    

    #If you don't have the host bus number, you must list all the existing host bus number on your system with the command

    $ ls /sys/class/scsi_host
    host0 host1 host2
    
    $ echo "- - -" > /sys/class/scsi_host/host0/scan
    $ echo "- - -" > /sys/class/scsi_host/host1/scan
    $ echo "- - -" > /sys/class/scsi_host/host2/scan
    
    <OR>
    
    # for host in `ls /sys/class/scsi_host/`;do
     echo "- - -" >/sys/class/scsi_host/${host}/scan;
    done
    

     

     

    URL

     

     

     

     

    • behrooz mohamadi nsasab
    ۰۲
    دی

    Basic Concepts in Firewalld

    Zones: The firewalld daemon manages groups of rules using entities called “zones”

    predefined zones:

    drop: The lowest level of trust. All incoming connections are dropped without reply and only outgoing connections are possible.
    block: Similar to the above, but instead of simply dropping connections, incoming requests are rejected with an icmp-host-prohibited or icmp6-adm-prohibited message.
    public: Represents public, untrusted networks. You don’t trust other computers but may allow selected incoming connections on a case-by-case basis.
    external: External networks in the event that you are using the firewall as your gateway. It is configured for NAT masquerading so that your internal network remains private but reachable.
    internal: The other side of the external zone, used for the internal portion of a gateway. The computers are fairly trustworthy and some additional services are available.
    dmz: Used for computers located in a DMZ (isolated computers that will not have access to the rest of your network). Only certain incoming connections are allowed.
    work: Used for work machines. Trust most of the computers in the network. A few more services might be allowed.
    home: A home environment. It generally implies that you trust most of the other computers and that a few more services will be accepted.
    trusted: Trust all of the machines in the network. The most open of the available options and should be used sparingly.

    Rule Permanence: In firewalld, rules can be designated as either permanent or immediate. Most firewall-cmd operations can take the "--permanent" flag

    Commands

    Install

    Install and Enable Your Firewall to Start at Boot

    $ sudoyum install firewalld  Install
    $ sudo systemctl enable firewalld
    $ sudo reboot

    Show Status(Information)

    verify the service is running and reachable by typing:

    $ sudo firewall-cmd --state
    output:  running

    Current Firewall Rules( which zone is currently selected as the default)

    firewall-cmd --get-default-zone
    output:
       publicPrint currently active zones
    

    Print currently active zones

    firewall-cmd --get-active-zones
    output:
     privateDNS
       interfaces: eth1
     publicweb
       interfaces: eth0

    list of the available zone

    $ sudo firewall-cmd --get-zones
    output:
    block dmz drop external home internal public trusted work

    see the specific configuration associated with a zone

    $ sudo firewall-cmd --zone=home --list-all
    output :
    home
      interfaces: 
      sources: 
      services: dhcpv6-client ipp-client mdns samba-client ssh
      ports: 
      masquerade: no
      forward-ports: 
      icmp-blocks: 
      rich rules:
    

    see the specific configuration associated with all zone

    sudo firewall-cmd --list-all-zones

    list of the available services

    firewall-cmd --get-services
    output
       RH-Satellite-6 amanda-client amanda-k5-client bacula bacula-client bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc ceph ceph-mon cfengine condor-collector ctdb dhcp dhcpv6 dhcpv6-client dns docker-registry dropbox-lansync elasticsearch freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master high-availability http https imap imaps ipp ipp-client ipsec iscsi-target kadmin kerberos kibana klogin kpasswd kshell ldap ldaps libvirt libvirt-tls managesieve mdns mosh mountd ms-wbt mssql mysql nfs nrpe ntp openvpn ovirt-imageio ovirt-storageconsole ovirt-vmconsole pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp pulseaudio puppetmaster quassel radius rpc-bind rsh rsyncd samba samba-client sane sip sips smtp smtp-submission smtps snmp snmptrap spideroak-lansync squid ssh synergy syslog syslog-tls telnet tftp tftp-client tinc tor-socks transmission-client vdsm vnc-server wbem-https xmpp-bosh xmpp-client xmpp-local xmpp-server

    list services

    sudo firewall-cmd --zone=public --list-all
    sudo firewall-cmd --zone=public --list-services

    List of ports

    sudo firewall-cmd --zone=public --list-ports

     

    Modify

    Changing the Zone of an Interface

    sudo firewall-cmd --zone=home --change-interface=eth0
    output
    success
    

    Adjusting the Default Zone

    sudo firewall-cmd --set-default-zone=home
    

    allow http/https traffic in our “public” zone

    sudo firewall-cmd --zone=public --add-service=http
    sudo firewall-cmd --zone=public --add-service=http  --permanent
    sudo firewall-cmd --zone=public --add-service=https
    sudo firewall-cmd --zone=public --permanent --add-service=https
    

    Opening a Port for your Zones

    sudo firewall-cmd --zone=public --add-port=5000/tcp
    sudo firewall-cmd --zone=public --add-port=4990-4999/udp
    sudo firewall-cmd --zone=public --permanent --add-port=5000/tcp
    sudo firewall-cmd --zone=public --permanent --add-port=4990-4999/udp
    sudo firewall-cmd --zone=public --permanent --list-ports

    change interface over zones

    sudo firewall-cmd --zone=public --change-interface=eth0
    

     

    URL

    • behrooz mohamadi nsasab
    ۱۲
    مرداد

    ps

     دستور پی اس بدون سوییچ فقط پروسس های ترمینال کنونی را نمایش خواهد داد

    سوییچ l (ال) : توضیحاتی اضافه از پروسس های ترمینال کنونی  

    پارامترهای F: 1: پردازش در حافظه در حال اجرا است

    2: معرف یک systemProcess استفاده

    3: پردازش در حافظه lock شده است بخاطر عملیات IO

    4: پردازش در وضعیت SWAP است

    پارامترهای:‌S

    کاراکتر W: پردازش در حال انتظار است

    کاراکتر R:  پردازش در حال اجرا

    کاراکتر S:  پردازش در  حال sleep

    کاراکتر Z: اجرای پروسس به اتمام رسیده است

    کاراکتر T:  پروسس متوقف شده است

    پارامتر PPID: پردازه پدر این پردازه - چه پروسسی این پردازه را به اجرا در آورده است


    ps -el

    نمایش تمام پردازه های فعال و درحال اجرا 

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

    • behrooz mohamadi nsasab
    ۰۱
    مرداد


    !! 

    execute last command.

    !top

    execute the most recent command that starts with ‘top’ (e.g. !).

    !top:p

    displays the command that !top would run (also adds it as the latest command in the command history).

    !$ 

    execute the last word of the previous command (same as Alt +., e.g. if last command is ‘cat tecmint.txt’, then !$ would try to run ‘tecmint.txt’).

    !$:p

    displays the word that !$ would execute.

    !*

    displays the last word of the previous command.

    !*:p

    displays the last word that !* would substitute.

    • 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
    ۱۵
    تیر

    URL

    برای اطلاع پیدا کردن از اطلاعات ساختاری و تعداد کانکشن‌ها و موارد administrator  میتونیم ماژول را  status_module فعال نمایید


     vim httpd.conf

    <Location "/server-status">
        SetHandler server-status
        Require host example.com
    </Location>

    سپس به آی پی رفته و در ادامه عبارت server-status را تایپ نمایید


    127.0.0.1/server-status

    • behrooz mohamadi nsasab
    ۰۸
    خرداد

    CLOSED: #Indicates that the server has received an ACK signal from the client and the connection is closed

    CLOSE_WAIT: #[Indicates that the server has received the first FIN signal from the client and the connection is in the process of being closed]

    #[So this essentially means that his is a state where socket is waiting for the application to execute close()]

    #[A socket can be in CLOSE_WAIT state indefinitely until the application closes it]

    #[Faulty scenarios would be like filedescriptor leak, server not being execute close() on socket leading to pile up of close_wait sockets]

    ESTABLISHED: #Indicates that the server received the SYN signal from the client and the session is established

    FIN_WAIT_1: #Indicates that the connection is still active but not currently being used

    FIN_WAIT_2: #Indicates that the client just received acknowledgment of the first FIN signal from the server

    LAST_ACK #Indicates that the server is in the process of sending its own FIN signal

    LISTENING: #Indicates that the server is ready to accept a connection

    SYN_RECEIVED: #Indicates that the server just received a SYN signal from the client

    SYN_SEND: #Indicates that this particular connection is open and active

    TIME_WAIT: #Indicates that the client recognizes the connection as still active but not currently being used

    • behrooz mohamadi nsasab
    ۲۳
    ارديبهشت

    Resolve:

    systemd-resolve -t MX gmail.com   #show mail server

    systemd-resolve -t SOA gmail.com   #show SOA .     Start Of Authority (More administrative information)   URL

    systemd-resolve 85.214.157.7        #Get domain name

    nslookup domain.ir [#Finding The IP Address of an Host from default dns server]

    nslookup domain.ir 8.8.8.8[#Finding The IP Address of an Host From non default dns server]

    nslookup -querytype=mx domain.ir[ #Find Mail Servers for a Domain]

    nslookup -query=mx domain.ir [#Find Mail Servers]

    nslookup -query=ns domain.ir [ #Find NameServers]

    nslookup -query=soa domain.ir [ #display the SOA record (information about the domain]

    nslookup -query=any domain.ir [ #display all the available DNS records]

    host -la domain.com [Show all record with Information]

    dig Domain.it axfr [Show all record with Information]

    systemd-resolve --statistics          #informations

     

    Flush the DNS Cache   URL

    Method 1: Using systemd-resolve to flush DNS-Cache

    sudo systemd-resolve --flush-caches

    sudo systemd-resolve --statistics

     

    Method 2: Using dns-clean to flush DNS-Cache

    sudo /etc/init.d/dns-clean start

     

     

    Resolve.conf

    Install:

    sudo apt install resolvconf

    For fix and NotChange file:

    vim  /etc/NetworkManager/NetworkManager.conf

    #Add below to main area :

    dns=none

     

    • behrooz mohamadi nsasab
    ۲۱
    اسفند

    SELinux stands for Security-Enhanced Linux. It is a way to improve the server security.


    cat /etc/selinux/config 
    # This file controls the state of SELinux on the system.
    # SELINUX= can take one of these three values:
    #     enforcing - SELinux security policy is enforced.
    #     permissive - SELinux prints warnings instead of enforcing.
    #     disabled - No SELinux policy is loaded.
    SELINUX=enforcing
    # SELINUXTYPE= can take one of three two values:
    #     targeted - Targeted processes are protected,
    #     minimum - Modification of targeted policy. Only selected processes are protected. 
    #     mls - Multi Level Security protection.
    SELINUXTYPE=targeted

    Show state:

    • $ sestatus       #show state
    • $ getenforce   #show state]

    change[not permanent]:

    • $ setenforce [enforcing] or [permissive]      

    Change Permanently:

    vim /etc/selinux/config
    SELINUX=enforcing


    • 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
    ۱۳
    اسفند

    1-show gateway(s):

    • route
    • route -n
    • ip route show
    • ip route list


    Add route:

    • route add default gw {IP-ADDRESS(router IP)} {INTERFACE-NAME}
    • route add default gw 192.168.1.254 eth0                            #Route all traffic via 192.168.1.254 gateway connected via eth0 network interface:
    • 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:
    • ip route add 192.168.1.0/24 via 192.168.1.254                         #to route all traffic via 192.168.1.254 gateway connected via eth0 network interface:

    Delete rout

    • ip route del default via 192.168.122.1 dev eth0

    GUI(set configuration from ui)

    • redhat-config-network                            #if your are using Red Hat/CentOS/Fedora core Linux type this
    • network-admin #If you are using other Linux distribution use this
    • behrooz mohamadi nsasab
    ۱۱
    اسفند

    سوکت‌های فعلی سرور که به هیچ فایلی از هارد وصل نشده است - پردازه‌های موجود در رم که ممکن است ویروس باشند

    lsof +L1

    • behrooz mohamadi nsasab
    ۱۱
    اسفند

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

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

    • behrooz mohamadi nsasab
    ۰۴
    اسفند

    • نمایش اطلاعات سروری که در آن برنامه VirtualBox در حال اجرا می‌باشد

    vboxmanage list hostinfo

    • نمایش لیست وی ام های موجود در سرور

    vboxmanage list vms

    • نمایش لیست وی ام های موجود در سرور با اطلاعات کامل

    vboxmanage list vms --long

    • نمایش لیست وی ام های روشن در سرور

    vboxmanage list runningvms 

    • نمایش لیست وی ام های روشن در سرور با اطلاعات کامل

    vboxmanage list runningvms --long

    • نمایش تمامی اطلاعات یک وی ام برحسب نام یا uuid

    vboxmanage showvminfo {UUID}

    • روشن کردن یک وی ام در حالت headless

    vboxheadless --startvm {UUID}

    • توقف در وضعیت یا pause  یک وی ام

    vboxmanage controlvm {UUID} savestate

    • خاموش کردن یک وی ام

    vboxmanage controlvm {UUID} acpipowerbutton

    • 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
    ۱۰
    بهمن

    یک تجربه: در دبیان ۹ برای اینکه 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
    ۱۰
    بهمن

    بایستی در تنظیمات apache در فایل php.ini مقادیر post_max_size و upload_max_filesize را زیاد کرده (دقت شود که مقدار 
    post_max_size بیشتر ازupload_max_filesize  باشد) و سپس سرویس آپاچی ریست شود


    post_max_size

    upload_max_filesize

    • behrooz mohamadi nsasab
    ۱۰
    بهمن
    توسط این برنامه می‌توان فایل یا متن از طریق شبکه منتقل نمود:

    ۱-ارسال متن:

    در گیرنده دستور زیر زده شود:
    nc -l -p PortNumber
    در سمت فرستنده نیز دستور زیر زده شود:
    echo "TEXT" | netcat  [Destination] PortNumber

    2-ارسال فایل:

    درسمت گیرنده دستور زیر زده شود
    nc -l -p 1234 > out.file
    در سمت فرستنده نیز دستور زیر زده شود
    nc -w 3 [destination] 1234 < out.file


    3-ارسال فایل-فشرده سازی

    درسمت فرستنده دستور زیر زده شود
    tar cfp - /some/dir | compress -c | nc -w 3 [destination] 1234
    در سمت گیرنده نیز دستور زیر زده شود
    nc -l -p 1234 | uncompress -c | tar xvfp -


    4-ارسال فایل- محتویات یک هارد (پارتیشن)

    درسمت فرستنده دستور زیر زده شود
    dd if=/dev/hda3 | gzip -9 | nc -l 3333
    در سمت گیرنده نیز دستور زیر زده شود
    nc [destination] 3333 | pv -b > hdImage.img.gz



    • behrooz mohamadi nsasab
    ۲۸
    تیر
    در فایل profile متن زیر را قرار دهید:
    • vim /etc/profile
    • export HISTTIMEFORMAT="%d/%m/%y %T "

    • behrooz mohamadi nsasab
    ۲۴
    خرداد

    اگر بخواهیم تنها عبارات سه حرفی را به نمایش بگذاریم از دستور زیر استفاده میکنیم

    grep -x '.\{3,10\}'
    • -x match pattern to whole line
    • . any symbol
    • {3,10} quantify from 3 to 10 times previous symbol (in the case any ones)

    ایجاد یک فایل بک آپ از همان فایل با پسوند backup در همان مسیر فایل موجود

    cp /etc/postfix/main.cf{,.backup}

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

    set -x
    

    IF

    Comparisons:

    -eq equal to
    -ne not equal to
    -lt less than
    -le less than or equal to
    -gt greater than
    -ge greater than or equal to


    File Operations:

    -s file exists and is not empty
    -f file exists and is not a directory
    -d directory exists
    -x file is executable
    -w file is writable
    -r

    file is readable

     


    نمونه خاص از تطبیق در شل URL

    [[ $a == z* ]]   # True if $a starts with a "z" (wildcard matching).
    [[ $a == "z*" ]] # True if $a is equal to z* (literal matching).

     

    در تمامی فایل‌های موجود در یک فولدرکلمه IRAN را در کاراکتر شماره شش inject می‌کند:

    for file in * ;
    do
         mv ./"$file" "${file:0:6}IRAN${file:6}";
         done
    

    یعنی abcdef.ext  تبدیل می‌شود به abcdefIRAN.ext
     


     

    حذف کاراکتر دَش یا همان «خط تیره» از تمامی فایل ‌های موجود در یک فولدر: 

     for file in ./*;
         do
             mv "$file" "${file/-/}";
         done
    

     

    • 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
    ۰۶
    خرداد

    در نرم افزار libreOffice در مجموعه excell آن:

    f8:                       select+بالا و پایین و چپ و راست
    f7:                       toolbar
    f11:                     منوی سمت راست   
    shift+f6:             toolbar

    در گنوم:

     ALT+F1                          برابر است با پنجره
    shift + F10                        برابر است با راست کلیک
    ctrl+F10                            برابر است با گزینه های منوی بالای هر پنجره

    • 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
    ۰۹
    ارديبهشت

    مقایسه میزان رم با استفاده از دو دستور:   free -m  و cat /proc/meminfo




    /proc/meminfo(KB) free -k Status
    MemTotal 4040208 4040208 Equal
    MemFree 518032 518016 Equal
    MemAvailable 1582984 1582968 Equal
    used
    2116340 Total – (free + cache + buffer)
    Buffers 94508 1405852 Equal
    Cached 1218532
    SwapTotal 9867260 9867260 Equal
    SwapFree 9867260 9867260 Equal
    swap used
    0
    Shmem 91388 91388 Equal
    • 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
    ۰۵
    فروردين
    فهمیدن 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
    ۱۴
    اسفند

    1-cat /proc/cpuinfo

    processor	: 0
    vendor_id	: GenuineIntel
    cpu family	: 6
    model		: 69
    model name	: Intel(R) Core(TM) i5-4210U CPU @ 1.70GHz
    stepping	: 1
    microcode	: 0x1c
    cpu MHz		: 1700.062
    cache size	: 3072 KB
    physical id	: 0
    siblings	: 4
    core id		: 0
    cpu cores	: 2
    apicid		: 0
    initial apicid	: 0
    fpu		: yes
    fpu_exception	: yes
    cpuid level	: 13
    wp		: yes
    flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm epb tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt dtherm ida arat pln pts
    bugs		:
    bogomips	: 4788.92
    clflush size	: 64
    cache_alignment	: 64
    address sizes	: 39 bits physical, 48 bits virtual
    power management:
    ......

    2- lscpu

    Architecture:          x86_64
    CPU op-mode(s):        32-bit, 64-bit
    Byte Order:            Little Endian
    CPU(s):                4
    On-line CPU(s) list:   0-3
    Thread(s) per core:    2
    Core(s) per socket:    2
    Socket(s):             1
    NUMA node(s):          1
    Vendor ID:             GenuineIntel
    CPU family:            6
    Model:                 69
    Model name:            Intel(R) Core(TM) i5-4210U CPU @ 1.70GHz
    Stepping:              1
    CPU MHz:               1303.687
    CPU max MHz:           2700.0000
    CPU min MHz:           800.0000
    BogoMIPS:              4788.92
    Virtualization:        VT-x
    L1d cache:             32K
    L1i cache:             32K
    L2 cache:              256K
    L3 cache:              3072K
    NUMA node0 CPU(s):     0-3
    Flags:                 fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm epb tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt dtherm ida arat pln pts
    

    3- cpuid

    CPU 0:
    vendor_id = "GenuineIntel"
    version information (1/eax):
    processor type  = primary processor (0)
    family          = Intel Pentium Pro/II/III/Celeron/Core/Core 2/Atom, AMD Athlon/Duron, Cyrix M2, VIA C3 (6)
    model           = 0x5 (5)
    stepping id     = 0x1 (1)
    extended family = 0x0 (0)
    extended model  = 0x4 (4)
    (simple synth)  = Intel Mobile Core i3-4000Y / Mobile Core i5-4000Y / Mobile Core i7-4000Y / Mobile Pentium 3500U/3600U/3500Y / Mobile Celeron 2900U (Mobile U/Y) (Haswell), 22nm
    miscellaneous (1/ebx):
    process local APIC physical ID = 0x0 (0)
    cpu count                      = 0x10 (16)
    CLFLUSH line size              = 0x8 (8)
    brand index                    = 0x0 (0)
    brand id = 0x00 (0): unknown
    feature information (1/edx):
    x87 FPU on chip                        = true
    virtual-8086 mode enhancement          = true
    debugging extensions                   = true
    page size extensions                   = true
    time stamp counter                     = true
    RDMSR and WRMSR support                = true
    physical address extensions            = true
    ....

    4- sudo dmidecode --type processor

    # dmidecode 3.0
    Getting SMBIOS data from sysfs.
    SMBIOS 2.7 present.
    Handle 0x0004, DMI type 4, 42 bytes
    Processor Information
    Socket Designation: U3E1
    Type: Central Processor
    Family: Core i5
    Manufacturer: Intel(R) Corporation
    ID: 51 06 04 00 FF FB EB BF
    Signature: Type 0, Family 6, Model 69, Stepping 1
    Flags:
    FPU (Floating-point unit on-chip)
    VME (Virtual mode extension)
    DE (Debugging extension)
    PSE (Page size extension)
    TSC (Time stamp counter)
    MSR (Model specific registers)
    PAE (Physical address extension)
    MCE (Machine check exception)
    CX8 (CMPXCHG8 instruction supported)
    APIC (On-chip APIC hardware supported)
    SEP (Fast system call)
    MTRR (Memory type range registers)
    PGE (Page global enable)
    MCA (Machine check architecture)
    .....

    5- inxi -C

    CPU:       Dual core Intel Core i5-4210U (-HT-MCP-) cache: 3072 KB 
    clock speeds: max: 2700 MHz 1: 1958 MHz 2: 1993 MHz 3: 1775 MHz 4: 1714 MHz
    

    6- sudo lshw -C CPU

    *-cpu                   
    description: CPU
    product: Intel(R) Core(TM) i5-4210U CPU @ 1.70GHz
    vendor: Intel Corp.
    physical id: 4
    bus info: cpu@0
    version: Intel(R) Core(TM) i5-4210U CPU @ 1.70GHz
    serial: To Be Filled By O.E.M.
    slot: U3E1
    size: 2626MHz
    capacity: 2700MHz
    width: 64 bits
    clock: 100MHz
    capabilities: x86-64 fpu fpu_exception wp vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm epb tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt dtherm ida arat pln pts cpufreq
    configuration: cores=2 enabledcores=2 threads=4

    7- hardinfo

    8- hwinfo --cpu

    01: None 00.0: 10103 CPU                                        
    [Created at cpu.460]
    Unique ID: rdCR.j8NaKXDZtZ6
    Hardware Class: cpu
    Arch: X86-64
    Vendor: "GenuineIntel"
    Model: 6.69.1 "Intel(R) Core(TM) i5-4210U CPU @ 1.70GHz"
    Features: fpu,vme,de,pse,tsc,msr,pae,mce,cx8,apic,sep,mtrr,pge,mca,cmov,pat,pse36,clflush,dts,acpi,mmx,fxsr,sse,sse2,ss,ht,tm,pbe,syscall,nx,pdpe1gb,rdtscp,lm,constant_tsc,arch_perfmon,pebs,bts,rep_good,nopl,xtopology,nonstop_tsc,aperfmperf,eagerfpu,pni,pclmulqdq,dtes64,monitor,ds_cpl,vmx,est,tm2,ssse3,sdbg,fma,cx16,xtpr,pdcm,pcid,sse4_1,sse4_2,movbe,popcnt,tsc_deadline_timer,aes,xsave,avx,f16c,rdrand,lahf_lm,abm,epb,tpr_shadow,vnmi,flexpriority,ept,vpid,fsgsbase,tsc_adjust,bmi1,avx2,smep,bmi2,erms,invpcid,xsaveopt,dtherm,ida,arat,pln,pts
    Clock: 2080 MHz
    BogoMips: 4788.92
    Cache: 3072 kb
    Units/Processor: 16
    Config Status: cfg=new, avail=yes, need=no, active=unknown
    ....

    9-nproc

    10-lspci




    • 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
    ۲۲
    بهمن

    1-IP(OnBoot-Permanent)-dhcp-debian

     

      vim /etc/network/interfaces
      • auto eth0
      • iface eth0 inet dhcp
      sudo /etc/init.d/networking restart

         

        2-IP(OnBoot-Permanent)-static-debian

         

          vim /etc/network/interfaces
          • auto eth0
          • iface eth0 inet static
          • address 192.168.50.2
          • netmask 255.255.255.0
          • gateway 192.168.50.1
          • dns-nameservers 192.168.200.1
          sudo /etc/init.d/networking restart

             

            3-IP(OnBoot-Permanent)-dhcp-redhat

             

             

              vim /etc/sysconfig/network-scripts/ifcfg-eth0
              • DEVICE=eth0
              • TYPE=Ethernet
              • ONBOOT=yes
              • BOOTPROTO=dhcp
              • IPV4_FAILURE_FATAL=yes
              • NAME="System eth0"

              service network restart

              or

              nmcli dev disconnect ${device}
              nmcli con reload ${device}
              nmcli con up ${device}

              4-IP(OnBoot-Permanent)-static-redhat

               

                vim /etc/sysconfig/network-scripts/ifcfg-eth0
                • DEVICE="eth0"
                • BOOTPROTO=static
                • ONBOOT=yes
                • TYPE="Ethernet"
                • IPADDR=192.168.50.2
                •  NAME="System eth0"
                •  HWADDR=00:0C:29:28:FD:4C
                • GATEWAY=192.168.50.1
                • [PEERDNS=no  (then add DNS to /etc/resolv.conf)]
                •  or [DNS1=8.8.8.8] and 
                • [DNS2=8.8.4.4]]

                service network restart

                or

                nmcli dev disconnect ${device}
                nmcli con reload ${device}
                nmcli con up ${device}

                5-VirtualIP-(OnBoot-Permanent)-debian-static

                 

                  vim /etc/network/interfaces [append]
                  • iface eth0:0 inet static
                  • address 123.123.22.22
                  • netmask 255.0.0.0
                  • broadcast 123.255.255.255
                  /etc/init.d/networking restart

                     

                     

                    6-VirtualIP-(OnBoot-Permanent)-debian-DHCP

                      vim /etc/network/interfaces [append]
                      • iface eth0:0 inet dhcp
                      /etc/init.d/networking restart

                         

                        7-virtualIP-(OnBoot-Permanent)-Redhat-static

                         

                          vim  /etc/sysconfig/network-scripts/ifcfg-eth0:0
                          • DEVICE=eth0:0
                          • IPADDR=123.123.22.22
                          • NETMASK=255.0.0.0
                          • NETWORK=123.0.0.0
                          • BROADCAST=123.255.255.255
                          • ONBOOT=yes

                          service network restart

                          or

                          nmcli dev disconnect ${device}
                          nmcli con reload ${device}
                          nmcli con up ${device}

                           

                          8-virtualIP-(OnBoot-permanent)-Redhat-DHCP

                           

                            vim  /etc/sysconfig/network-scripts/ifcfg-eth0:0
                            • DEVICE=eth0:0
                            • BOOTPROTO=dhcp
                            • ONBOOT=yes

                            service network restart

                            or

                            nmcli dev disconnect ${device}
                            nmcli con reload ${device}
                            nmcli con up ${device}

                             

                            9-IP(Not permanent)-ifconfig

                            • ifconfig -a                                                               #show all Interface and details
                            • ifconfig enp6s0 down                                            #set off interface
                            • ifconfig enp6s0 up                                                 #set on interface
                            • ifconfig enp6s0 192.168.2.24                                #set ip to interface
                            • ifconfig enp6s0 netmask 255.255.255.0                #set subnetmask
                            • ifconfig enp6s0 mtu 9000                                      #set mtu
                            • ifconfig enp6s0:0 192.168.2.25                             #set secondary ip (virtual)
                            • ifconfig eth0:0 down                                              #set off virtual ip
                            •  

                             

                            10-IP(Not permanent)-ip

                            • ip a                                                                         #show all Interface and details
                            • ip link set eth0 down                                             #set Off interface
                            • ip link set eth0 up                                                  #set on interface
                            • ip addr add 192.168.2.24/24 dev eth0                    #set ip to interface
                            • ip link set eth0 mtu 9000                                       #set mtu
                            • ip addr del 192.168.1.1/24 dev eth0                       #set Off interface
                            • ip addr show eth0
                             
                             
                             

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

                            system-config-network-tui
                            نکتنه: میتوانیم با دستور زیر برنامه‌ای در CentOS6 نصب کنیم تا بتوانیم توسط آن کارت شبکه را تنظیم نماییم:
                            yum intall system-config-network
                            • behrooz mohamadi nsasab
                            ۲۲
                            بهمن
                            می‌توان آدرس مک(یا همان physical address) یک اینتر فیس را تغییر داد
                            ifconfig eth0 hw ether AA:BB:CC:DD:EE:FF

                            • behrooz mohamadi nsasab
                            ۱۶
                            بهمن

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

                            • behrooz mohamadi nsasab
                            ۰۹
                            بهمن

                            برای ارسال ایمیل از از طریق ترمینال باید با دستور زیر بسته های ذیل را نصب نمایید:

                            sudo apt-get install ssmtp mailutils


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

                            cat /etc/ssmtp/ssmtp.conf |grep -v -E ^#|grep .
                            root=postmaster
                            mailhub=smtp.gmail.com:587
                            hostname=oldpc
                            UseTLS=Yes
                            UseSTARTTLS=Yes
                            AuthUser=alertbehrooz@gmail.com
                            AuthPass=*******
                            FromLineOverride=YES

                            همچنین با دستور زیر ایمیل دلخواه خود را ارسال نمایید:
                            echo "TextBody" | mail -s "subject"  behroozmohammadinasab@gmail.com

                            URL1

                            URL2

                            URL3

                            URL4

                            • behrooz mohamadi nsasab
                            ۰۸
                            بهمن
                            برای اجرای یک دستور در یک یوزر خاص از دستور زیر استفاده میشود:
                            sudo -u USERNAME bash -c 'command'

                            • behrooz mohamadi nsasab
                            ۰۸
                            بهمن

                            برای ذخیره خروجی یک ترمینال از دستور script استفاده نمایید:

                            script FILENAME.txt

                            بازدن دستور بالا یک فایل به نام بالا در مسیر home یوزر ایجاد میشود که حاوی تمام حروجی ترمنیال است


                            Link

                            • behrooz mohamadi nsasab
                            ۰۳
                            آذر

                            دستورات جالب و خنده‌دار ترمینال لینوکس

                            Sl
                            لوکوموتیو در حال حرکت
                            نصب:

                            # apt-get install sl        (In Debian like OS)
                            # yum  -y install sl        (In RedHat like OS)

                            بازدن دستور زیر در خروجی یک لوکوموتیو در حال حرکت را خواهید دید.

                            Sl

                            cowsay

                            نمایش گاو وعبارت دلخواه جهت شوخی و جذابیت ( در صفحه خط فرمان)

                            # cowsay i love seclinux

                            خروجی:

                             _________________
                            < i love seclinux >
                             -----------------
                                    \   ^__^
                                     \  (oo)\_______
                                        (__)\       )\/\
                                            ||----w |
                                            ||     ||



                            toilet

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

                            toilet SALAM

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

                            toilet LOTFAN DAST NAZANID |wall


                            cowthink
                            نمایش گاو در صفحه خط فرمان (همانند دستور cowsay)

                            cmatrix

                            نمایش کاراکتر ها بصورت باران



                            oneko

                            نصب:

                            apt-get install oneko

                            ظاهر شدن یک موش در صفحه گرافیکی که مکان نمای موس را دنبال می‌کند.

                            Oneko




                            قطعه کد جالب نمایش زمان بصورت رنگی

                            زمان بصورت رنگی در صفحه ترمینال

                            while true; do echo "$(date '+%D %T' | toilet -f term -F border --gay)"; sleep 1; done

                            شکل دیگر از دستور بالا

                            while true; do clear; echo "$(date '+%D %T' | toilet -f term -F border --gay)"; sleep 1;

                            done

                            خواندن متن توسط صدا

                            پخش صدا

                            espeak "Linuxzone is a very good website dedicated to Foss Community"



                            نمایش آتش در صفحه ترمینال

                            aafire

                            هواشناسی

                            curl http://wttr.in/tehran

                            دستور bb

                            sudo apt-get install bb

                            با نصب آن وارد محیط جدید شده و میتوان صدای موسیقی را اجرا کرد و لذت برد




                            آکواریم در ترمینال
                            با دستور زیر یک آکواریم در ترمینال خواهید داشت

                            root@tecmint:~# apt-get install libcurses-perl
                            cd /tmp
                            wget http://search.cpan.org/CPAN/authors/id/K/KB/KBAUCOM/Term-Animation-2.4.tar.gz
                            tar -zxvf Term-Animation-2.4.tar.gz
                            cd Term-Animation-2.4/
                            perl Makefile.PL &&  make &&   make test
                            make install

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

                            cd /tmp
                            wget http://www.robobunny.com/projects/asciiquarium/asciiquarium.tar.gz
                            tar -zxvf asciiquarium.tar.gz
                            cd asciiquarium_1.1/
                            cp asciiquarium /usr/local/bin
                            chmod 0755 /usr/local/bin/asciiquarium

                            و در پایان " asciiquarium" یا " /usr/local/bin/asciiquarium" را اجرا کنید، بدون اینکه سحر و جادویی در کار باشد، در مقابل چشمان شما رخ خواهد داد.

                            asciiquarium



                            ساعت در TTY
                            نصب برنامه ساعت در TTY

                            Sudo apt-get install tty-clock

                            مشاهده ساعت دیجیتالی در TTY

                            tty-clock -s


                            دستور rev مخفف Reverse

                            این دستور، هر رشته ای را که به آن داده شود، معکوس می کند.

                            root@tecmint:~# rev

                            123abc
                            cba321


                            xuniL eb ot nrob
                            born to be Linux


                            وب‌سایت  بازی برای یادگیری دستورات vim :   آدرس لینک

                            • 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
                            ۰۳
                            آذر

                            بهترین راه خاموش کردن سرورهای لینوکس است، زیرا به تمام کاربران Login شده سرور اطلاع رسانی می‌نماید (ارسال و نمایش پیغام)

                            همچنین از Login  کاربر جدید جلوگیری به عمل آورده و سیگنالی به init  ارسال می‌نماید تا Run Level  تغییر نماید و پس از آن سیگنال دیگری ( سیگنالSIGTERM ) به تمامی Process های Run شده روی سرور ارسال مینماید که  توسط آن مهلت چند ثانیه ای ذخیره اطلاعات Save نشده و آماده سازی برایkill شدن به پردازش ها میدهد..
                            در نهایت پس از گذشت  مدت زمان مهلت داده شده، در صورتی که هنوز پردازشی باقی مانده باشند، سیگنال kill  شدن بصورت Force  به آن ارسال می‌شود  (سیگنال SIGKILL ) و در این حالت سیستم خاموش خواهد شد.

                            Switch ها:

                            • c- : غیرفعال شدن اثر دستوات Shutdown (درصورت تنظیم موعد خاموش شدن سیستم، آن را کنسل میکند)
                            • h- : برای خاموش کردن سیستم
                            • k- : فقط برای فرستادن پیغام به تمامی یوزر های فعال
                            • r- : برای ریست کردن سیستم


                            خاموش شدن سیستم بعد از وقفه کوتاه

                            # shutdown

                            تغییر حالت Run Level به شماره 0  (shutdown ) بعد از وقفه کوتاه

                            # shutdown -h

                            تغییر حالت Run Level به شماره 6  (Restart ) بعد از وقفه کوتاه

                            # shutdown –r

                            تغییر حالت Run Level به شماره 6 (Restart ) در لحظه فعلی (هم اکنون)

                            # shutdown –r now

                            تغییر حالت Run Level به شماره 6 (Restart )بعد از وقفه دو دقیقه

                            # shutdown –r 2

                            تغییر حالت Run Level به شماره 6 (Restart )بعد از وقفه دو دقیقه  همراه با نمایش پیغام (متنComment برای تمامی کاربران Broadcast می گردد.)

                            # shutdown –r 2 “Comment”

                            تغییر حالت Run Level به شماره 6 (Restart )دقیقا در زمان 18:23

                            # shutdown –r 18:23

                            تغییر حالت Run Level به شماره 6 (Restart )بعد از وقفه 9 ثانیه

                            # shutdown –r -t 9

                            تغییر حالت Run Level به شماره 6 (Restart )بعد از وقفه 15 دقیقه

                            # shutdown -r +15

                            متوقف نمودن (cancel ) پروسه shutdown ، درصورت تنظیم موعد shutdown آنرا کنسل میکند

                            # shutdown –c

                            سایر دستورها

                            تغییر Run Level به شماره شش(restart نمودن سیستم عامل)

                            # reboot

                            تغییر Run Level به شماره صفر(خاموش نمودن سیستم عامل)

                            # halt

                            همچنین

                            # poweroff

                            خروج از وضعیت Login سیستم و بازگشت به صفحه (خط)Login جهت ورود مجدد

                            # logout

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

                            با استفاده از این دستور می توان دریافت که فایل اجرایی یک برنامه ( execute ) برای اجرا به چه کتابخانه (ها) ای وابسطه است.
                            برای دیدن وابستگی برنامه ی ls که به چه کتابخانه‌هایی وابستگی دارد،  ابتدا مسیر اجرایی را پیدا نموده و سپس با ldd توابع را جستجو میکنیم.

                            # which ls

                            خروجی دستور:

                            # /bin/ls

                            سپس دستور را به ldd میدهیم

                            # ldd /bin/ls

                            برای راحتی می توان به صورت زیر عمل کرد(خلاصه سازی دو مرحله در یک مرحله)

                            # ldd `which ls`

                            در مثال بالا ابتدا دستور داخل ‘` اجرا شده سپس خروجی آن دقیقا در جلوی دستور ldd قرار می گیرد.


                            نکته: دقیقا همین کار را برنامه ی xargs نیز انجام می دهد با این تفاوت که xargs خروجی دستور قبل را وارد ورودی دستور بعد می کند اما این روش دقیقا خروجی را در جلوی دستور ldd قرار می‌دهد


                            نکته: اگر از چند برنامه ldd بگیرید خواهید دید که یک خروجی در همه ی آن ها یکی است(مثلا مطابق زیر)

                            .../lib64/ld-linux-x86-64.so.2


                            نکته:برنامه whereis نیز همانند which عمل میکند



                            نمایش تمام توابع کتابخانه ای dynamic برای اجرای دستور ls

                            >> ldd     /bin/ls



                            جستجوی تمام مسیرهایی که دارای تابع کتابخانه ای هستند و ذخیره آدرس ونام آنها در فایل

                            /etc/ld.so.cache

                            و در ادامه

                            >> ldconfig



                            تمام Library ها در این فایل هستند

                            # /etc/ld.so.cache    




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

                            نگهداری مکانهایی که قابل استفاده اند و انتخاب پیشفرض آن‌ها

                            sudo dpkg-reconfigure locales

                            دستور زیر متغیرهای مکانی(برنامه ها متغیرهای خود را بر اساس چه کشوری تنظیم نمایند) را نمایش میدهد:
                            locale
                            خروجی:
                            LANG=en_US.utf8
                            LANGUAGE=
                            LC_CTYPE="en_US.utf8"
                            LC_NUMERIC="en_US.utf8"
                            LC_TIME="en_US.utf8"
                            LC_COLLATE="en_US.utf8"
                            LC_MONETARY="en_US.utf8"
                            LC_MESSAGES="en_US.utf8"
                            LC_PAPER="en_US.utf8"
                            LC_NAME="en_US.utf8"
                            LC_ADDRESS="en_US.utf8"
                            LC_TELEPHONE="en_US.utf8"
                            LC_MEASUREMENT="en_US.utf8"
                            LC_IDENTIFICATION="en_US.utf8"
                            LC_ALL=

                            بعنوان مثال LANG=en_US.UTF-8 نشان دهنده آن است که زبان سیستم روی انگلیسی به زبن آمریکا تنظیم شده است و همچنین فرم آن از utf8 پیروی میکند. همچنین موارد دیگر نشان دهنده نوع نمایش اطلاعات سیستم شما در خروجی است مثلاً زمان با رمت انگلیسی یا فارسی نمایش بشود

                            :

                            انگلیسی: LC_TIME=en_US.UTF-8

                            فارسی:LC_TIME=fa_IR



                            نکته:می‌توان با LC_ALL تمام موارد local را تغییر داد(با گذاشتن عبارت زیر در فایل etc/profile)

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

                            export LC_ALL=fa_IR.UTF-8

                            برای برگرداندن به حالت قبل:

                            unset  LC_ALL

                            برای برگرداندن به حالت defaults

                            export LC_ALL=C

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

                            Timedatectl

                            بهترین دستور برای کنترل و بررسی سیستم دستور زیر است:
                            timedatectl
                            درخروجی این دستور عبارت real time clock یا RTC همان chip درون مادربرد هست که با خاموش شدن کامپیوتر مقدار ساعت را در خود ذخیره و نگهداری می‌کند
                            در خروجی این دستور عبارت DST یا daylight saving time همان مقدار یک ساعتی هست که در تابستان ساعت ها را به جلو و در زمستان ساعت ها را به عقب می‌کشانند

                            دستورات مفید:
                            timedatectl set-time 'YYYY-MM-DD HH:MM:SS'		#set time and date
                            timedatectl set-time HH:MM:SS				#for time only
                            timedatectl set-time YYYY-MM-DD				#for date only
                            timedatectl list-timezones				#list the available timezones
                            timedatectl set-timezone "Asia/Tehran" 			#Set timeZone
                            timedatectl set-timezone utc				#Set timeZone To UTC
                            timedatectl | grep local				#Find out if your hardware clock is set to local timezone-BestMode is "no"
                            timedatectl set-local-rtc 1				#Set hardware clock to local timezone
                            timedatectl set-local-rtc 0				#Set hardware clock to coordinated universal time (UTC)
                            timedatectl set-ntp true				#start automatic time synchronization with remote NTP server,
                            timedatectl set-ntp false				#disable NTP time synchronization
                            


                            sudo dpkg-reconfigure tzdata				#debian: reconfig timerzone
                            cat /etc/timezone					#show current timezone
                            ls -ltrh /etc/localtime					#show current timezone[lrwxrwxrwx 1 root root 31 اوت   21 23:40 /etc/localtime -> /usr/share/zoneinfo/Asia/Tehran]
                            date							#Show time
                            date +%Y%m%d-%H%M%S					#Out: 20190707-134444
                            • behrooz mohamadi nsasab
                            ۲۴
                            شهریور
                            مدت زمانی که یک برنامه یا پردازه طول میکشد:
                            time cp مبدأ    مقصد


                            • 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
                            ۲۴
                            شهریور


                            تفاوت cron و anacron در این است که اگر کاری در cron تعریف شود درصورت خاموش بودن سیستم، آن کار منقضی می‌شود و دیگر اجرا نخواهد شد. اما در anacron  مکانیزم بدین صورت است که حتس در صورت خاموش بودن سیستم عامل، کار مورد نظر پس از روشن شدن انجام خواهد شد.

                            معمولا برای تهیه فایل پشتیبانی یا backup از این مورد استفاده می‌شود .


                            /etc /anacrontab

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

                            Minute Hour DayOfMonth Month DayOfWeek Command


                            Minute: دقیقه(0-59)

                            Hour: ساعت(0-23)

                            DayOfMonth: روز از ماه(1-31)

                            Month: ماه(1-12 یا نام ماه)

                            DayOfWeek: روز از هفته(0-7 یا نام روز )، صفر یعنی یک‌شنبه و برای دیگر روزها به ترتیب از یک‌شنبه محاسبه شود


                            نکته: اگر جای یکی از موارد بالا ستاره گذاشته شود یعنی همه (مثلاً دقیقه را ستاره بود یعنی هر دقیقه)

                            نکته: اگر بجای زمان در موارد بالا تنها از reboot@ استفاده شود یعنی هربار که سیستم ریست شود کار خاص مورد نظر انجام بشود

                            نکته: اگر بجای زمان در موارد بالا تنها از daily@ استفاده شود یعنی هرروز کار خاص مورد نظر انجام بشود

                            نکته: وقتی دستوری در cron اجرا میشودخروجی آن دستور به owner آن cron ایمیل خواهد شد

                            نکته:cron یک سرویس است.

                            نکته: با افزودن یک job جدید تنظیمات و کارها در مکان زیر قرار می‌گیرند:

                            /var/spool/cron/tabs/ or /var/spool/crontabs

                            که به هیچ وجه نباید مستقیماً این فایل را ادیت کنیم بلکه باید توسط دستور crontab -e جاب را مدیریت کنیم که باعث بروز رسانیدر این فایل خواهد شد


                            مشاهده تمام job های موجود در cron کاربر فعلی

                            crontab -l


                            برای ادیت کردن و افزودن job  در گستره کاربر فعلی  از دستور زیر استفاه شود:

                            crontab -e

                            نکته: اگر در مسیرهای زیر  دستوری قرار بگیرد توسط سیستم عامل ضمانت میشود که آن دستور به اجرا در آورده شود(در بازه زمانی مشخص شده در نام آن دایرکتوری).

                            /etc/cron.daily:        once on each days

                            /etc/cron.hourly :     once on each hours

                            /etc/cron.monthly:   once on each month

                            /etc/cron.weekly:     once on each week


                            نکته: هرچه در داخل دایرکتوری /etc/cron.d/ قرار بگیرد گویی در ادامه فایل etc/crontab/ قرار گرفته است.این مکانیزم برای تمیز ماندن دستورات و فایل‌ها و ایجاد نظم در دادن دستورات متفاوت در فایل های متفاوت بوجود آمده است.مثلا یک فایل بنام raw ایجاد میکنیم و درون آن مانند فرم دستورcron  یک job میسازیم و آن را میبندیم، ازین پس کار آن فایل هم به کارهای سرویس cron افزوده خواهد شد.



                            مثال‌ها:

                            اجرا دستور در ساعت 14:15  اول هرماه

                            15 14 1 * * command


                            اجرا دستور در ساعت 22:00 در دوشنبه تا جمعه

                            0 22 * * 1-5 command


                            اجرا دستور در دقیقه 23 در هر ساعت زوج (دقیقه های 23 در تمام سات های روز ، درحالت هر دوساعت یکبار) در هر ماه از سال(مثلا:00:23 و 02:23 و 04:23 و 06:23 و ...)

                            23 0-23/2 * * * command



                            اجرا دستور در ساعت 04:05  در روزهای یک‌شنبه در هر ماه از سال

                            5 4 * * sun command


                            اجرا دستور در هر 5 دقیقه یکبار

                            */5 * * * * command


                            اجرا دستور در هر 8:42 و 18:42 دقیقه در هر دوشنبه تا جمعه در هر ماه

                            42 8,18 * * 1-5 command


                            اجرا دستور در هر ریست شدن سیستم عامل

                            @reboot command


                            اجرا دستور در هر دقیقه 42 در هر چهارساعت یکبار

                            42*/4 * * * command


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

                            * * * * 1-4/2 command


                            • behrooz mohamadi nsasab