2016-10-10 6 views
0
  1. 検索ラインと再起動がデーモン
  2. をsshdが
  3. "AllowUsersというの[email protected]" と言って一番下に "のPermitRootLogin no" の
  4. 追加ラインと交換

(マイコード)ハーデンsshd_configファイルのpython経由

#!/usr/bin/python3 
import fileinput 

for line in fileinput.input("/etc/ssh/sshd_config", inplace=True), : 
    print (line.replace("#PermitRootLogin", "PermitRootLogin no")) 

(エラー)

のファイル "./assignment4-part1.py"ファイル内のトレースバック( "#PermitRootLogin"、 "PermitRootLogin = no")) AttributeError: 'FileInput 「オブジェクトが属性を持っていない 『』

を置き換える(注)

私は、検索を行っている他の記事から見た別の方法を試してみましたが、ラインを交換するが、同様の問題/エラーに遭遇します。どんな指導も大歓迎です。私はCentOSを使い、python3はインストールされている/更新されています。

答えて

0

コードに構文エラーがあります。あなたが実際にfileinput.FileInputオブジェクトを含む、単一要素のタプルを反復処理ではなく、オブジェクト自体を反復していることを意味し

for line in fileinput.input("/etc/ssh/sshd_config", inplace=True), : 

:あなたのforループ式は、誤ったカンマを持っています。

カンマを削除します。

for line in fileinput.input("sshd_config", inplace=True):      

他の二つの短い勧告:

printは改行を追加しているため、あなたの全体をダブル間隔終わるだろうので、あなたのループでprintを使用しないでくださいをファイル。代わりに考えてみましょう:

for line in fileinput.input("sshd_config", inplace=True):      
    sys.stdout.write(line.replace("#PermitRootLogin", "PermitRootLogin no"))    

最後に、あなたの入力ファイルが含まれている場合は何が起こるか考えてみます。

#PermitRootLogin no 

あなたのコードは、これを書き換えます:無効な

PermitRootLogin no no 

を。

+0

感謝を避ける:そして良い初心者は、Pythonに案内し得ます。まだいくつかの問題に遭遇しました。 sshd_configファイルをスクリプトと同じフォルダに置くと、実行時にファイル内のすべてが消去され、以下のエラーが表示されます。 – tekdj1

+0

助けてくれてありがとう。まだいくつかの問題に遭遇しました。 sshd_configファイルをスクリプトと同じフォルダに置くと、実行時にファイル内のすべてが消去され、以下のエラーが表示されます。 – tekdj1

+0

トレースバック(直前の最後のコール): ファイル "ssh-part1.py"、行6、 sys.stdout。write(line.replace( "#PermitRootLogin"、 "PermitRootLogin no")) NameError:名前 'sys'が定義されていません – tekdj1

0

Pythonファイルの場合は、先頭にimport sysを追加します。 >

するか、GNU sedの正規表現を使用することを検討し、Pythonに助けを完全に

関連する問題