Передача файла на удаленный компьютер (Ubuntu) при удаленном запуске bash - PullRequest
0 голосов
/ 27 ноября 2011

Я написал сценарий bash, который должен запускаться на удаленном сервере (ubuntu) с интерфейсом GUI (zenity), и я дам команду ниже на локальной машине.

sshpass -p $PASS ssh root@$SERVER 'bash' < /tmp/dep.sh | tee >(zenity --progress --title "Tomcat Deployer" --text "Connecting to Tomcat Server..." --width=400 --height=150) >>/tmp/temp.log;

Я хочу перенести файл со своего локального компьютера на сервер, и я хочу добиться этого, поместив ввод в файле bash (/tmp/dep.sh) в самой вышеупомянутой команде, не открывая новый сеанс на сервере.

Я предпочитаю команду ниже для передачи файла на сервер, и я должен поместить это в скрипт bash (/tmp/dep.sh), и он должен запускаться на сервере для копирования файла с моего локального компьютера. Я не хочу указывать свой локальный ip в качестве переменной и использовать в качестве источника в команде blow, так как скрипт используется и на других машинах, и, следовательно, ip изменяется. И я не должен передавать файл с моего локального сервера на запись отдельного rsync & ssh, создавая еще один сеанс ssh.

rsync --rsh="sshpass -p '$PASS' ssh" '$local:$APPATH/$app.war' /tmp

Кто-нибудь может сделать любую магию для передачи файла с локального на сервер с помощью вышеупомянутого подключенного сеанса SSH с помощью вышеупомянутого rsync или другими способами и без открытия нового отдельного соединения?

Спасибо!

Редактировать 1 :

Может ли это быть достигнуто с помощью одного сеанса SSH (одна команда)?:

rsync --rsh="sshpass -p serverpass ssh -o StrictHostKeyChecking=no" /home/user1/Desktop/app.war root@192.168.1.5:/tmp;
sshpass -p serverpass ssh -o StrictHostKeyChecking=no root@192.168.1.5 '/etc/init.d/tomcat start'

1 Ответ

0 голосов
/ 27 ноября 2011

Вы хотите использовать мультиплексирование SSH. Это делается с использованием параметров ControlMaster и ControlPath. Вот статья об этом.

...