【问题标题】:Need Control from Unix shell -> Python -> & back需要来自 Unix shell -> Python -> & back 的控制
【发布时间】:2013-03-07 10:30:12
【问题描述】:

有一个 weblogic 脚本 test.sh 包含以下代码。

echo "Starting   ...."
java weblogic.WLST helloworld.py
echo "Ending ..."The output after printing "Starting ...." 

第二行代码提示下面的msg

如果创建密钥文件会降低系统的安全性 创建后未保存在安全位置。你想要_____吗 创建密钥文件?是或否

然后我必须手动按我希望自动作为“y”的 y 或 n。

除此之外,无需用户干预。

我需要以某种方式自动传递“y”,以便脚本继续流动,而不是停止用户输入。

下面是helloworld.py脚本的内容

connect(user1,p@ss,'t3://myhost:9999')
storeUserConfig(userConfigFile='userconfig.secure',userKeyFile='userkey.secure') 
disconnect() 
exit()

你能帮帮我吗?

【问题讨论】:

  • 我们究竟能为您提供什么帮助?
  • 在 OP 中提到:需要以某种方式自动传递 'y' 以便脚本继续流动并且不会停止用户输入,因此控件应该自动返回到执行 python 的 unix shell 后在当前情况下没有发生。

标签: python unix wlst


【解决方案1】:

您可以在 python 中将java weblogic.WLST helloworld.py 命令作为子进程执行。然后您可以解析上述问题的输出并通过stdin.write('y\n') 输入“y”。

【讨论】:

  • 需要从 unix shell 触发 python,所以你的解决方案可以工作吗?我不确定如何实现您的建议
  • 没问题。我的意思是创建第二个 python 文件,它调用helloworld.py 脚本作为子进程。有关子流程模块的详细信息,请参阅docs.python.org/2/library/subprocess.html。然后必须由 weblogic 调用第二个脚本,而不是 helloworld.py
  • k... 我尝试了两个命令,但都看起来有问题的抛出错误。 process=subprocess.call(['./helloworld.py', 'sys.argv[1]', 'sys.argv[2]']) output=process.stdin.write('y') .... .错误:调用 WLST 时出现问题 - 回溯(最后一个):文件“/tmp/call_helloworld.py”,第 5 行,在? NameError: 子进程
  • import subprocess了吗?
  • 如果我说“导入子进程”,那么我会收到以下错误。 ImportError:没有名为子进程的模块
猜你喜欢
  • 1970-01-01
  • 2019-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-05
  • 1970-01-01
  • 1970-01-01
  • 2021-07-27
相关资源
最近更新 更多