meta data for this page
  •  

Összehasonlítás

A kiválasztott és az jelenlegi változat között az alábbi különbségek fordulnak elő:

Összehasonlító nézet hivatkozása

Előző változat mindkét oldalonElőző változat
Következő változat
Előző változat
linux:network [2020/03/26 09:32] – [Egyéb okosságok] adminlinux:network [2026/05/18 18:02] (aktuális) – [Port tesztelés BASH-sel] admin
Sor 1: Sor 1:
 ====== Hálózati okosságok ====== ====== Hálózati okosságok ======
 +
 +==== File letöltő BASH-sel ====
 +
 +<file>
 +#!/bin/bash
 +# Usage: ./download_file 'https://www.baeldung.com/java-weekly-495' 'java_weekly_495.html'
 +raw_download() {
 +    wPROTO="${1%://*}"
 +    af="${1#*://}"
 +    wBASE="${af%%/*}"
 +    wSUB="${af#*/}"
 +
 +    HTTP_REQUEST="$({
 +        echo -en 'GET /'"${wSUB}"' HTTP/1.1\r\n'
 +        echo -en 'Host: '"${wBASE}"'\r\n'
 +        echo -en 'Connection: close\r\n\r\n'
 +    })"
 +
 +    if [[ "${wPROTO,,}" = 'https' ]] ; then
 +        echo "${HTTP_REQUEST}" | openssl s_client -quiet -connect ${wBASE}:443
 +    else
 +        exec {NFD}<>"/dev/tcp/${wBASE}/80"
 +        echo "${HTTP_REQUEST}" >&"${NFD}"
 +        while read -u "${NFD}" lz; do
 +            echo "${lz}"
 +        done
 +        exec {wFD}>&-
 +    fi
 +}
 +
 +main() {
 +    raw="$(raw_download "${1}" 2>errorlog.txt)"
 +    echo "${raw#*$'\r\n\r\n'}" > "${2}"
 +}
 +
 +main "${@}"
 +</file>
 +
 +==== Rsync ====
 +
 +To create a new directory at the destination and back up your files there, add a trailing slash (/) at the end of the destination path. If you add the trailing slash to the source, then the source directory will not be created at the destination. Rsync only transfers its content in that case.
 +Kulcs használat:
 +
 +  rsync e "ssh -i $HOME/.ssh/somekey"
  
 ==== Firewalld ==== ==== Firewalld ====
Sor 5: Sor 49:
 [[https://linuxconfig.org/introduction-to-firewalld-and-firewall-cmd-command-on-linux]] [[https://linuxconfig.org/introduction-to-firewalld-and-firewall-cmd-command-on-linux]]
  
 +==== Port tesztelés BASH-sel ====
 +
 +/dev/tcp/host/port: (If host is a valid hostname or Internet address, and port is an integer port number or service name, bash attempts to open a TCP connection to the corresponding socket.)
 +
 +/dev/udp/host/port: (If host is a valid hostname or Internet address, and port is an integer port number or service name, bash attempts to open a UDP connection to the corresponding socket.)
 +
 +So you could use something like this:
 +
 +  xenon-lornix:~> cat < /dev/tcp/127.0.0.1/22
 +  SSH-2.0-OpenSSH_6.2p2 Debian-6
 +  ^C pressed here
 +
 +Szkriptbe:
 +
 +  (echo > /dev/tcp/localhost/1500) >/dev/null 2>&1 && echo "It's up" || echo "It's down"
 +  timeout 1s bash -c "true <>/dev/tcp/localhost/443" >/dev/null 2>&1 && echo "It's up" || echo "It's down"
 +  while [[ -n $((echo > /dev/tcp/$TCPS/$TCPP) 2>&1 > /dev/null) ]]; do echo varunk; sleep 10; done
 +
 +nc-vel:
 +
 +  nc -zv hoszt port
 +
 +python-nal:
 +
 +  python3 -c "import socket; s = socket.socket(); s.settimeout(3); print('NYITVA' if s.connect_ex(('hoszt', port)) == 0 else 'ZÁRVA')"
 +  
 +curl-lel:
 +
 +  curl -v http://hoszt:port
 +
 +Windows PowerShell:
 +
 +  Test-NetConnection -ComputerName myserver.com -Port 443
 ==== NFS okosságok ==== ==== NFS okosságok ====
  
Sor 10: Sor 87:
  
 ==== SSH okosságok ==== ==== SSH okosságok ====
 +
 +[[linux:ssh-exit-codes.sh|SSH exit kódok]]
 +
 +=== SSH tunnelling ===
 +
 +HosztA:123 -> HosztB:22 -> HosztC:443
 +
 +  ssh -L 123:HosztC:443 HosztB:22
 +  links https://localhost:123
  
 === SSH-n másolás köztes állomáson át === === SSH-n másolás köztes állomáson át ===
Sor 64: Sor 150:
       expect eof"       expect eof"
 </file> </file>
 +
 +Az ssh parancs ne hajtsa végre a hibás RC kódú parancs utáni többi parancsot: set -e
  
 === SFTP leírások === === SFTP leírások ===
Sor 86: Sor 174:
  
   [node1]# cat /dev/zero | ssh node2 "cat > /dev/null"   [node1]# cat /dev/zero | ssh node2 "cat > /dev/null"
 +  [node1]# dd if=/dev/zero bs=1M count=1000 status=progress | ssh node2 "cat > /dev/null"
  
 FTP-vel (Unix/Linux): FTP-vel (Unix/Linux):
Sor 102: Sor 191:
  
 === Ethernet és FC portok lekérdezése === === Ethernet és FC portok lekérdezése ===
 +
 +<file>
 +#!/bin/bash
 +
 +echo "HBA portok és látott eszközök:"
 +echo "---------------------------------------------------------------"
 +echo -e "HOST\tPORT_WWN\t\tPORT_STATE"
 +
 +for host in /sys/class/fc_host/host*; do
 +  port_wwn=$(cat "$host/port_name" | sed 's/^0x//')
 +  port_state=$(cat "$host/port_state")
 +  hostnum=$(basename "$host")
 +  echo -e "$hostnum\t$port_wwn\t$port_state"
 +done
 +
 +echo
 +echo "Látott eszközök (SCSI target-ek):"
 +echo "---------------------------------------------------------------"
 +echo -e "HOST\tTARGET\tLUN\tTYPE\tVENDOR\tMODEL"
 +
 +for d in /sys/class/scsi_device/*; do
 +  device=$(basename "$d")
 +  host=$(echo $device | cut -d: -f1)
 +  target=$(echo $device | cut -d: -f2)
 +  lun=$(echo $device | cut -d: -f3)
 +
 +  type=$(cat "$d/device/type")
 +  vendor=$(cat "$d/device/vendor" 2>/dev/null | xargs)
 +  model=$(cat "$d/device/model" 2>/dev/null | xargs)
 +
 +  # SCSI type számból szöveges fordítás
 +  case "$type" in
 +    0) type_str="Disk" ;;
 +    1) type_str="Tape" ;;
 +    3) type_str="Processor" ;;
 +    5) type_str="CD/DVD" ;;
 +    8) type_str="Medium Changer" ;;
 +    0x1f) type_str="Unknown" ;;
 +    *) type_str="Other($type)" ;;
 +  esac
 +
 +  echo -e "$host\t$target\t$lun\t$type_str\t$vendor\t$model"
 +done
 +</file>
  
 <file> <file>
Sor 149: Sor 282:
  
   tcpdump -c 1000 -nni bond0 -e vlan | grep -o 'vlan [0-9]*' | sed 's/^.*$/Found & tagged pockets/' | sort | uniq   tcpdump -c 1000 -nni bond0 -e vlan | grep -o 'vlan [0-9]*' | sed 's/^.*$/Found & tagged pockets/' | sort | uniq
 +
 +==== NPIV létrehozása Emulex FC kártyán RHEL 8.1-en ====
 +
 +=== Emulex kártya azonosítása ===
 +
 +Először nézzük meg mi van a gépben:
 +
 +  # PCI eszközök listázása - Emulex kártyák
 +  lspci | grep -i emulex
 +  lspci | grep -i "fibre channel"
 +  
 +  # Részletesebb info
 +  lspci -v | grep -A 10 -i "fibre channel"
 +
 +A driver és modul azonosítása:
 +
 +  # lpfc driver = Emulex (LightPulse Fibre Channel)
 +  lsmod | grep lpfc
 +  
 +  # Kártya adatai sysfs-ből
 +  ls /sys/class/scsi_host/
 +  cat /sys/class/scsi_host/host*/modelname
 +  cat /sys/class/scsi_host/host*/modeldesc
 +
 +
 +A tényleges FC portok és WWN-ek:
 +
 +  # Melyik host melyik port
 +  cat /sys/class/fc_host/host*/port_name
 +  cat /sys/class/fc_host/host*/node_name
 +  cat /sys/class/fc_host/host*/port_state
 +  cat /sys/class/fc_host/host*/supported_speeds
 +  cat /sys/class/fc_host/host*/speed
 +
 +
 +=== NPIV támogatás ellenőrzése ===
 +
 +
 +  # Megmutatja hány vport hozható létre
 +  cat /sys/class/fc_host/host*/npiv_vports_inuse
 +  cat /sys/class/fc_host/host*/max_npiv_vports
 +  
 +  # Ha 0-t vagy hibát ad, a kártya/driver nem támogatja
 +
 +=== NPIV vport létrehozása ===
 +
 +
 +== Egyszer (nem perzisztens, tesztelésre) ==
 +
 +  # Manuálisan - a kernel generál WWN-t
 +  echo "0x$(cat /proc/sys/kernel/random/uuid | tr -d '-' | head -c 16)" > \
 +  /sys/class/fc_host/host0/vport_create
 +  
 +  # Vagy egyszerűbben, a kernel választ WWN-t:
 +  echo "0x0000000000000000" > /sys/class/fc_host/host0/vport_create
 +  
 +  #### Ajánlott: `lpfc` driver + `systool` / `udevadm` helyett → **`udev` rule + script**
 +
 +== Perzisztens megoldás – systemd service ==
 +
 +Mivel az RHEL 8 nem tartalmaz beépített vport manager-t, a legtisztább megoldás egy systemd service:
 +
 +**/etc/fc_vports.conf**:
 +<file>
 +  # itt definiálod a vportokat:
 +  # format: fizikai_host  WWPN  WWNN
 +  host0  0x10000090fae12345  0x20000090fae12345
 +  host1  0x10000090fae16789  0x20000090fae16789
 +</file>
 +
 +**/usr/local/sbin/fc_vport_create.sh**:
 +<file>
 +#!/bin/bash
 +CONF="/etc/fc_vports.conf"
 +
 +while read -r host wwpn wwnn; do
 +  [[ "$host" =~ ^# ]] && continue
 +  [[ -z "$host" ]] && continue
 +
 +  VPORT_PATH="/sys/class/fc_host/${host}/vport_create"
 +
 +  if [ ! -f "$VPORT_PATH" ]; then
 +    echo "WARN: ${host} nem létezik, kihagyva"
 +    continue
 +  fi
 +
 +  # Ellenőrzés: már létezik-e ez a WWPN?
 +  EXISTING=$(ls /sys/class/fc_vports/ 2>/dev/null | xargs -I{} cat \
 +    /sys/class/fc_vports/{}/port_name 2>/dev/null | grep -c "$wwpn")
 +
 +  if [ "$EXISTING" -gt 0 ]; then
 +    echo "INFO: ${wwpn} már létezik, kihagyva"
 +    continue
 +  fi
 +
 +  echo "${wwpn}:${wwnn}" > "$VPORT_PATH"
 +  echo "OK: vport létrehozva ${host} -> ${wwpn}"
 +
 +done < "$CONF"
 +</file>
 +
 +  chmod +x /usr/local/sbin/fc_vport_create.sh
 +
 +**/etc/systemd/system/fc-vports.service**:
 +<file>
 +[Unit]
 +Description=FC NPIV vport creation
 +After=network.target
 +# Fontos: a storage stack indulása után fusson
 +After=multipathd.service
 +Wants=multipathd.service
 +
 +[Service]
 +Type=oneshot
 +ExecStart=/usr/local/sbin/fc_vport_create.sh
 +RemainAfterExit=yes
 +
 +[Install]
 +WantedBy=multi-user.target
 +</file>
 +
 +  systemctl daemon-reload
 +  systemctl enable fc-vports.service
 +  systemctl start fc-vports.service
 +  systemctl status fc-vports.service
 +
 +=== Ellenőrzés ===
 +
 +
 +  # Létrejöttek-e a vportok?
 +  ls /sys/class/fc_vports/
 +  
 +  # Vport részletek
 +  cat /sys/class/fc_vports/vport-*/port_name
 +  cat /sys/class/fc_vports/vport-*/port_state
 +
 +  # Vagy összefoglalóan
 +  for v in /sys/class/fc_vports/vport-*; do
 +    echo "=== $(basename $v) ==="
 +    echo "WWPN: $(cat $v/port_name)"
 +    echo "State: $(cat $v/port_state)"
 +  done
 +
 +=== WWN-ek kitalálása (ha nem adták meg) ===
 +
 +
 +Ha a storage adminok még nem adtak WWPN-eket, generálhatsz érvényes értéket:
 +
 +  # Emulex OUI: 0010:9B (lpfc driver convention)
 +  # Egyszerű megközelítés: az alap WWPN-ből inkrementálj
 +  BASE=$(cat /sys/class/fc_host/host0/port_name)
 +  echo "Alap WWPN: $BASE"
 +  # pl. ha 0x10000090fae00001 -> vport lehet 0x10000090fae00002
 +
 +De ezt egyeztesd a **storage adminokkal / SAN zoning** felelőssel, mert a vport WWPN-eket be kell zónázni a storage oldalán is!
 +
 +**Összefoglalva a sorrend:**
 +  - `lspci` + `cat /sys/class/fc_host/host*/modelname` → kártya azonosítás
 +  - `max_npiv_vports` ellenőrzés → támogatja-e
 +  - WWN-ek egyeztetése storage adminnal
 +  - Script + systemd service → perzisztens vportok
 +  - Storage oldalon zoning + host mapping beállítás
 +
  
 [[http://www.yolinux.com/TUTORIALS/LinuxTutorialNetworking.html#MULTICAST]] [[http://www.yolinux.com/TUTORIALS/LinuxTutorialNetworking.html#MULTICAST]]
  
 [[https://www.aelius.com/njh/subnet_sheet.html|Subnet Mask Cheat Sheet]] [[https://www.aelius.com/njh/subnet_sheet.html|Subnet Mask Cheat Sheet]]