大佬教程收集整理的这篇文章主要介绍了使用 Python3 通过 SSH/sFTP 替换远程文件中与特定模式匹配的文本并确保它已关闭的最安全方法是什么?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要替换远程文本文件中的值。这大多有效,但最近我遇到了一个问题,正在处理的远程文件的 .swp(下面示例中的“script.sh”)被留在野外,整个程序卡住了(Python 脚本由 jenkins 管道启动)顺便说一句)。
这可能意味着正在处理的文件从未正确关闭,最终冻结了修改后的脚本文件的后续远程执行。
替换远程 Bash 脚本文件中的文本并确保它在执行前正确关闭的最安全方法是什么?
实际代码:
server = "server.tld"
ssh_user = "foo"
ssh_keypath = "/home/foo/.ssh/rsa_01"
ssh_pass = "ZZZZZZZ"
ssh_clIEnt = paramiko.SSHClIEnt()
ssh_clIEnt.set_missing_host_key_policy(paramiko.autoaddPolicy())
try:
ssh_clIEnt.connect(server,port=ssh_port,username=ssh_user,key_filename=ssh_keypath,passphrase=ssh_pass)
except Exception as e:
msg = "An error occured on Remote Server {} : {}"
logger.error(msg.format(server,str(E)))
sftp_clIEnt = ssh_clIEnt.open_sftp()
tmp_sh_path = "/opt/dir/tmp/script.sh"
# replacing text in script file
with sftp_clIEnt.open(tmp_sh_path,mode="r+") as remote_sh_file:
try:
lines = remote_sh_file.readlines()
remote_sh_file.seek(0)
for line in lines:
if line.startswith("export OracLE_HOME="):
remote_sh_file.write("export OracLE_HOME={}\n".format("/Oracle/app/product/X.X.X"))
else:
remote_sh_file.write(linE)
except Exception as e:
msg = "An error occured when ediTing script file {} on Remote Server {} : {}"
logger.error(msg.format(tmp_sh_path,server,str(E)))
finally:
remote_sh_file.close()
logger.info("file ediTing seems to be performed properly on Remote Server")
# Edited script execution
ssh_cmd_exec_script = "cd {}; ./{} foo".format(os.path.dirname(tmp_sh_path),os.path.basename(tmp_sh_path))
# stuck at this point
cmd_exec_script = ssh_exec(ssh_clIEnt=ssh_clIEnt,cmd=ssh_cmd_exec_script,spool=TruE)
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
以上是大佬教程为你收集整理的使用 Python3 通过 SSH/sFTP 替换远程文件中与特定模式匹配的文本并确保它已关闭的最安全方法是什么?全部内容,希望文章能够帮你解决使用 Python3 通过 SSH/sFTP 替换远程文件中与特定模式匹配的文本并确保它已关闭的最安全方法是什么?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。