Я написал сценарий 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'