Как выйти в YAML из корректного пути?

Для создания этого абсолютно портативным, можно заменить $ () синтаксис с:

I=1; for X in `/bin/ls -r /var/tmp/*`; do [ $I -le 28 ] && echo "lower" || echo "higher"; I=`expr $I + 1`; done

Но остерегайтесь заданий крона и мировых перезаписываемых каталогов.

3
27.04.2016, 10:20
2 ответа

Вы используете одинарные кавычки для параметров командной строки -d как для указания строк, разделенных $ variable , так и для цитирования аргумента для второго sed команда.

Для $ aAllowUsers SomeUser это может быть то, что вы хотите, но для / PermitRootLogin / s /^.*$/ PermitRootLogin no / это, вероятно, не то, что вам нужно / bin / sh для расширения. Помещение туда обратной косой черты должно помочь:

   - sed -i -e \'/PermitRootLogin/s/^.*$/PermitRootLogin no/\' /etc/ssh/sshd_config

YAML не должен иметь никаких проблем с этим элементом списка, имеющим одинарные кавычки в середине скалярного значения.

2
27.01.2020, 21:16

Использовать heredoc для такого ввода. И вам нужно избегать символов новой строки и кавычек, потому что они не разрешены в вашей конструкции appliaction / json .

user_data=$(awk -v 'ORS=\\n' 1 <<'HERE' | sed 's/"/\\"/g'
#cloud-config

users:
- name: SomeUser
  groups: wheel
  shell: /bin/bash
  ssh-authorized-keys:
  - ssh-dss AAAABBBBCCCCDDDDD...

runcmd:
- sed -i -e '$aAllowUsers SomeUser' /etc/ssh/sshd_config
- sed -i -e '/PermitRootLogin/s/^.*$/PermitRootLogin no/' /etc/ssh/sshd_config
- service sshd restart
HERE
)

curl -X POST https://api.digitalocean.com/v2/droplets \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer $api_key" \
-d - <<HERE 
{
  "name": "$droplet_name",
  "region": "$region",
  "size": "$size",
  "image": "$image", 
  "ssh_keys": "$root_ssh_pub_key",
  "backups": false,
  "ipv6": false,
  "private_networking": false,
  "user_data": "$user_data"
}
HERE
3
27.01.2020, 21:16

Теги

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