67452


以下のようなシェルスクリプトを書いたのですが、`♦` と `★` に入る部分をどのように書けばいいか分かりません。

CentOS7で実施したい事は以下の流れで作りたいのです。

  * openssh-serverが存在するか？存在しなければ `yum -y install openssh-server` でインストールを実行しなさい。（if文を使うのは分かるのですが。）
  * sshdの設定を書き換えなさい。 
    * `#PasswordAuthentication yes` の `#` を取ります。
    * また、`PermitRootLogin yes` と入れます。
    * `Password Authentication yes` とします。
  * その後、sshd.serviceの再起動をかけて、statusがactiveであれば、完了する。

**現状のシェルスクリプト**

[code]

    #!/bin/bash
    yum list installed | grep ssh
    ◆
    yum -y install openssh-server
    vim /etc/ssh/sshd_config
    i
    ★
    systemctl stop sshd.service
    systemctl start sshd.service
    systemctl status sshd.service
    
[/code]


CC BY-SA 4.0
2020-06-09T07:47:25.677
67451
2020-06-09T08:12:49.807
2020-06-09T08:06:35.657
3060
31472
question
linux centos
CentOS で sshd の設定を行うシェルスクリプトを作成したい


`yum install` を実行した時、既にインストール済みならメッセージが表示されるだけなので、敢えて事前に if
文でチェックする必要は無い気がします。

設定ファイル(`/etc/ssh/sshd_config`)の編集に Vim
を使おうとしていますが、シェルスクリプトで処理するなら別のコマンドを使った方が簡単かと思います (Vimでバッチ処理をする方法もありますが)。

書き換えようとしている箇所はいずれもコメントアウトされた状態なので、かなり手抜きをすると例えば以下のような方法になるかと思います。

[code]

    #!/bin/bash
    
    yum -y install openssh-server
    echo "PasswordAuthentication yes" >> /etc/ssh/sshd_config
    echo "PermitRootLogin yes"        >> /etc/ssh/sshd_config
    
    systemctl start sshd.service
    systemctl enable sshd.service
    
[/code]

なお、"status が active であれば完了とする" とありますが、完了でなかった場合にどうするかが書かれていないので回答では考慮していません。


CC BY-SA 4.0
2020-06-09T08:12:49.807
67452
2020-06-09T08:12:49.807
3060
67451
answer