@@ -10,6 +10,7 @@ import (
1010 "os"
1111 "os/user"
1212 "path/filepath"
13+ "strings"
1314 "time"
1415
1516 "github.com/hashicorp/go-multierror"
@@ -47,6 +48,8 @@ type envsetupStore interface {
4748 AppendString (path string , content string ) error
4849 Chmod (path string , mode os.FileMode ) error
4950 ChownFilePathToUser (path string ) error
51+ OverWriteString (path string , content string ) error
52+ GetFileAsString (path string ) (string , error )
5053}
5154
5255type nologinEnvStore interface {
@@ -200,16 +203,23 @@ func appendLogToFile(content string, file string) error {
200203var motd string
201204
202205func (e * envInitier ) SetupMOTD () error {
203- err := e .store .WriteString ("/etc/ssh/my_banner" , motd )
206+ err := e .store .OverWriteString ("/etc/ssh/my_banner" , motd )
204207 if err != nil {
205208 return breverrors .WrapAndTrace (err )
206209 }
207210
208- err = e .store .AppendString ("/etc/ssh/sshd_config" , "Banner /etc/ssh/my_banner " )
211+ fstring , err : = e .store .GetFileAsString ("/etc/ssh/sshd_config" )
209212 if err != nil {
210213 return breverrors .WrapAndTrace (err )
211214 }
212215
216+ if ! strings .Contains (fstring , "Banner /etc/ssh/my_banner" ) {
217+ err = e .store .AppendString ("/etc/ssh/sshd_config" , "Banner /etc/ssh/my_banner" )
218+ if err != nil {
219+ return breverrors .WrapAndTrace (err )
220+ }
221+ }
222+
213223 err = setupworkspace .BuildAndRunCmd ("systemctl" , "reload" , "ssh.service" )
214224 if err != nil {
215225 return breverrors .WrapAndTrace (err )
@@ -257,6 +267,7 @@ func (e envInitier) Setup() error { //nolint:funlen,gocyclo // TODO
257267 postPrepare := util .RunEAsync (
258268 e .SetupVsCodeExtensions ,
259269 e .SetupSpeedTest ,
270+ e .SetupMOTD ,
260271 )
261272
262273 err = util .RunEAsync (
0 commit comments