擅长:python、mysql、java
<p>代码中有语法错误。您的<code>for</code>循环表达式有一个错误的逗号:</p>
<pre><code>for line in fileinput.input("/etc/ssh/sshd_config", inplace=True), :
</code></pre>
<p>这意味着您实际上是在一个包含<code>fileinput.FileInput</code>对象的单个元素元组上迭代,而不是迭代对象本身。在</p>
<p>删除逗号:</p>
^{pr2}$
<p>另外两个简短的建议:</p>
<p>不要在循环中使用<code>print</code>,因为<code>print</code>会附加一个换行符,所以您将以两倍的间距结束整个文件。相反,请考虑:</p>
<pre><code>for line in fileinput.input("sshd_config", inplace=True):
sys.stdout.write(line.replace("#PermitRootLogin", "PermitRootLogin no"))
</code></pre>
<p>最后,考虑一下如果您的输入文件包含:</p>
<pre><code>#PermitRootLogin no
</code></pre>
<p>您的代码将重写为:</p>
<pre><code>PermitRootLogin no no
</code></pre>
<p>这是无效的。在</p>