Есть несколько способов сделать это.
Если вы, вероятно, часто будете делать подобные вещи, возможно, вам стоит изучить Ansible или другие подобные инструменты автоматизации.
Если это -ошибка, вероятно, самый простой способ — скопировать эти команды в скрипт,scp
сценарий на удаленные машины, а затем удаленно выполнить их с помощьюssh
:
$ for host in cs-{2..4}; do scp my-script.sh myuser@"$host":; ssh -t $host "sudo./my-script.sh"; done
Кроме того, если вы уверены в своей команде sed
, вместо того, чтобы вручную записывать временный файл и копировать новый на место, вы можете сделать что-то вроде:
sed --in-place 's/aes128-ctr/aes129-ctr/;s/aes130-ctr/aes131-ctr/;s/aes132-ctr/aes133-ctr/' /etc/ssh/sshd_config
Так как это одна команда, вы можете просто для каждого хоста:
$ ssh user@host "sed --in-place 's/aes128-ctr/aes129-ctr/;s/aes130-ctr/aes131-ctr/;s/aes132-ctr/aes133-ctr/' /etc/ssh/sshd_config"
Если вас не беспокоит округление в bc, вы можете сделать:
$ echo "scale=10 ; "$val/1" " | bc
111.1080555135
Когда значение делится (даже на 1 ), количество десятичных знаков корректируется до scale
.
Конечно, вы всегда можете снова использовать оболочку printf (, некоторые округления могут пролезть в ).
$ printf '%5.10f\n' "$val"
111.1080555135
Зачем нужна точность?