В качестве примера входного файла:
$ cat client_23.xml
<world>
<hello>collect_model = 1</hello>
<hello>enable_data = 0</hello>
<hello>session_ms = 2*60*1000</hello>
<hello>max_collect = string_integer($extract("max_collect"))</hello>
<hello>max_collect = parenting(max_collect, max_collect, 1.0e99)</hello>
<hello>output('{')</hello>
</world>
<derta-config>
<data-users>2000</data-users>
<test-users>2000</test-users>
<attributes>hello world</attributes>
<client-types>Client1</model-types>
<target>price.world</target>
</derta-config>
Мы можем внести оба изменения, используя:
$ sed 's|<hello>collect_model = 1</hello>|<hello>collect_model = 0</hello>|; \|<derta-config>|,\|</derta-config>|d' client_23.xml
<world>
<hello>collect_model = 0</hello>
<hello>enable_data = 0</hello>
<hello>session_ms = 2*60*1000</hello>
<hello>max_collect = string_integer($extract("max_collect"))</hello>
<hello>max_collect = parenting(max_collect, max_collect, 1.0e99)</hello>
<hello>output('{')</hello>
</world>
У нас есть две команды sed. Первый - замена, второй - удаление:
s |
Команды замены имеют вид s | старый | новый |
. Итак, здесь старый
- это исходный
, а новый
- это замена
.
\ |
Определяет диапазон строк. Начальная строка содержит derta-config>
, а конечная строка содержит
. Все строки в этом диапазоне удаляются командой удаления d
.
Выяснилось, что в моем случае лучшим способом было сгенерировать.pem на сервере, куда я хотел развернуть файлы.
На сервере (ВМ в моем случае):
1- generate ssh key : ssh-keygen -t rsa -b 2048
2- cat keyName.pub >>.ssh/authorized_keys
3- chmod 600.ssh/authorized_keys
4- create pem file : openssl rsa -in id_rsa -outform pem > id_rsa.pe
На клиенте:
1- get pem file
2- chmod 400 id_rsa.pem
For Testing Purpose :
3- ssh -i id_rsa.pem <user>@<host>
В моем случае я использую Java для развертывания файлов, поэтому я использовал sshj
для отправки файлов с помощью newSCPFileTransfer()
библиотеки sshj.
Лучше всего написать сценарий или использовать Ansible. Оба требуют ssh. См. документацию Ansible здесь и Простое руководство Ansible на tutorialspoint