Bash / Сүлжээний командууд (curl, wget, ssh)

Сүлжээний командууд (curl, wget, ssh)

Terminal-аас интернэттэй ажиллах чадвар хөгжүүлэгчид зайлшгүй хэрэгтэй. Файл татах, API дуудах, алсын серверт холбогдох — бүгдийг командын мөрөөс хийж болно. Энэ хичээлд curl, wget, ssh гурван гол хэрэгслийг судална.

curl — URL-аас өгөгдөл авах

curl бол URL-тай ажиллах хамгийн хүчирхэг хэрэгсэл юм. API дуудах, файл татах, форм илгээх — бүгдэд тохирно.

Энгийн хэрэглээ:

bash
# Вэб хуудасны HTML-г харах
curl https://example.com

# API-с JSON авах
curl https://api.github.com/users/torvalds

# Гаралтыг файлд хадгалах
curl -o index.html https://example.com

# Файлын нэрийг URL-с авах
curl -O https://example.com/data.csv

Хамгийн их ашигладаг тугнууд:

bash
# Дэлгэрэнгүй мэдээлэл (verbose)
curl -v https://example.com

# Зөвхөн HTTP status code
curl -o /dev/null -s -w "%{http_code}" https://example.com

# POST хүсэлт илгээх
curl -X POST \
  -H "Content-Type: application/json" \
  -d '{"name": "Болд", "age": 25}' \
  https://api.example.com/users

# Нууц үг шаардах endpoint
curl -u username:password https://api.example.com/private

# Дахин чиглүүлэлт дагах (-L)
curl -L https://example.com/redirect

Практик жишээ — GitHub API ашиглах:

bash
#!/bin/bash
set -euo pipefail

# GitHub хэрэглэгчийн мэдээлэл авах
get_github_user() {
  local username="$1"
  local response

  response=$(curl -s "https://api.github.com/users/$username")

  echo "$response"
}

user_info=$(get_github_user "torvalds")
echo "Хариу: $user_info"

wget — Файл татаж авах

wget нь файл татахад тусгайлан зориулагдсан. Интернэт тасарсан ч дахин оролдох, бүхэл сайт татах зэрэг онцлогтой:

bash
# Файл татах
wget https://example.com/file.zip

# Файлыг өөр нэрээр хадгалах
wget -O myfile.zip https://example.com/file.zip

# Тасалдвал үргэлжлүүлэх (-c)
wget -c https://example.com/bigfile.iso

# Чимээгүй горим
wget -q https://example.com/data.csv

# Бүх холбоос дагаж татах (сайт татах)
wget -r -l2 https://example.com

curl болон wget харьцуулалт:

bash
# Файл татахад хоёул адил
curl -O https://example.com/file.zip
wget https://example.com/file.zip

# API дуудахад curl илүү тохиромжтой
curl -X POST -H "Content-Type: application/json" -d '{}' https://api.example.com

# Тасалдвал үргэлжлүүлэхэд wget илүү хялбар
wget -c https://example.com/hugefile.tar.gz

ssh — Алсын серверт холбогдох

ssh (Secure Shell) нь алсын компьютерт аюулгүй холбогдоход ашиглагдана. Бараг бүх production сервер SSH-аар удирддаг:

bash
# Серверт холбогдох
ssh username@server_ip

# Өөр port ашиглах
ssh -p 2222 username@server_ip

# SSH key ашиглах
ssh -i ~/.ssh/mykey.pem username@server_ip

# Нэг команд ажиллуулаад гарах
ssh username@server_ip "ls -la /var/log"

# Файл хуулах (scp)
scp localfile.txt username@server_ip:/remote/path/
scp username@server_ip:/remote/file.txt ./local/

SSH key үүсгэх:

bash
# RSA key үүсгэх
ssh-keygen -t ed25519 -C "minii@email.com"

# Public key-г серверт нэмэх
ssh-copy-id username@server_ip

# Эсвэл гараар нэмэх
cat ~/.ssh/id_ed25519.pub | ssh username@server_ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

SSH config файл тохируулах — нууц үгийн оронд богино нэрээр холбогдох:

bash
# ~/.ssh/config файл үүсгэх
cat > ~/.ssh/config << 'EOF'
Host myserver
    HostName 192.168.1.100
    User deploy
    IdentityFile ~/.ssh/id_ed25519
    Port 22

Host production
    HostName prod.example.com
    User ubuntu
    IdentityFile ~/.ssh/prod_key.pem
EOF

# Одоо богино нэрээр холбогдоно
ssh myserver
ssh production

Практик script — Вэб API-тай ажиллах

bash
#!/bin/bash
set -euo pipefail

readonly API_URL="https://api.github.com"

check_api() {
  local status_code

  status_code=$(curl -o /dev/null -s -w "%{http_code}" "$API_URL")

  if [[ "$status_code" == "200" ]]; then
    echo "✓ API хэвийн ажиллаж байна (HTTP $status_code)"
  else
    echo "✗ API хариу алдаатай (HTTP $status_code)" >&2
    return 1
  fi
}

download_if_updated() {
  local url="$1"
  local output="$2"

  wget -q --timestamping -O "$output" "$url"
  echo "Татагдлаа: $output"
}

check_api
download_if_updated "$API_URL/users/torvalds" "torvalds.json"

Дараагийн хичээлд:

Автоматжуулалтын бодит жишээнүүдийг судална — файл нөөцлөх, log цэвэрлэх, хяналт тавих script-г бүтнээр нь бичнэ.