Что такое `cat file | хост ssh 'cat -> file'` do?

это сценарий:

#!/bin/bash

usage() {
    echo "deploy-nginx.sh --production|--staging"
}

case "$1" in
    --staging) NGINX_CONF="conf/nginx-staging"; HOST="staging" ;;
    --production) NGINX_CONF="conf/nginx-production"; HOST="production" ;;
    *) usage; exit 2;
esac

cat "$NGINX_CONF" | ssh -F conf/ssh_config "$HOST" '
    cat - > /tmp/ironscales
    sudo cp /etc/nginx/sites-available//tmp/myapp{,-$(date +%Y%m%d-%H%M%S)}
    sudo mv /tmp/myapp /etc/nginx/sites-available/myapp
    sudo service nginx reload
'

Я понимаю функцию использования, а переключение регистра

, чего я совсем не понимаю, это часть, следующая за cat

1
задан 25 May 2019 в 10:17

1 ответ

Часть, следующая за cat "$NGINX_CONF", служит для копирования файла из переменной $NGINX_CONF на удаленный компьютер с помощью ssh и выполнения других действий.

  • cat "$NGINX_CONF" | ssh открывает файл и направляет его в процесс ssh, менее эффективный способ позволить оболочке сделать то же самое с

    <"$NGINX_CONF" ssh
    

    Партия в одном в кавычках содержатся команды для запуска на удаленном компьютере. ssh передает свой ввод (то есть содержимое файла) этой команде.

  • cat - > /tmp/ironscales перенаправляет стандартный ввод cat (= ssh) (-) в указанный файл
0
ответ дан 25 May 2019 в 10:17

Другие вопросы по тегам:

Похожие вопросы: