在Python中通过Telnet连接批量执行SAS
我一直想找到一个替代SAS界面的办法。我们在服务器上使用SAS,而不是在个人电脑上,所以每次要执行代码时都得先打开一个远程桌面应用。
我尝试用Telnet连接来远程连接到服务器,并批量执行SAS程序。接着我想知道能不能写一个Python脚本来实现远程连接和批量执行代码,并且这个脚本可以在jEdit中作为BeanShell脚本运行。
到目前为止,我已经写了Python代码,能够成功打开和关闭Telnet连接。它可以执行一些基本的命令,比如调用“dir”。但是,当我在Python中使用和在远程服务器的命令提示符下执行SAS时完全相同的命令时,却没有任何反应。
是不是服务器阻止我从脚本中执行代码呢?在运行任何代码之前,我使用了“read_until”语句来等待提示符。
2 个回答
这篇文章讲述了如何使用一个Python脚本通过SSH连接到Unix服务器,先把本地写好的SAS程序复制到服务器上,然后批量提交这个程序,最后再把结果下载回你的本地电脑。整个过程是通过一个BeanShell宏脚本在jEdit中完成的。
这里有几个想法……
你遇到的问题可能和Windows的本地安全策略设置有关(如果是在Windows服务器上运行的话)。我对这些东西不是很精通,但我记得以前的SAS/Intranet安装需要在这些设置里翻找一下才能正常工作。
作为你上面尝试的方法的替代方案,你也可以在服务器上设置一个SAS会话,让它监听传入的socket请求,具体可以参考这篇文章:
http://analytics.ncsu.edu/sesug/2000/p-1003.pdf
最后……不确定这是否有帮助,但我使用PSEXEC远程执行SAS作业。关于我如何设置这一切的描述可以在这里找到:
http://www.runsubmit.com/questions/260/hide-sas-batch-jobs-winxp
祝你好运