下面的一段代码是一个较大程序的一部分,该程序通过第一行.CookedValue
的批处理脚本在远程服务器上运行。
在我的本地计算机上,它可以正常运行,但是在远程服务器上会出现权限问题。怎么了?
对代码的描述可能对该问题并不重要,但是基本上,代码基于文件名使用awk处理文件内容。
为什么awk被拒绝对文件进行操作的权限?当我直接在远程服务器的shell提示符下运行awk时,它可以正常工作。
(Get-counter -Counter "\TCPv4\Connections Established").countersamples | Select-Object -ExpandProperty CookedValue
任何帮助将不胜感激。
答案 0 :(得分:1)
我非常确定这是一个权限问题,因为当您登陆到远程机器时,它没有登陆到存在您的Input_file的目录上,当然,它将登陆到远程服务器上登录用户的HOME目录中。因此,最好的做法是提及具有完整路径的文件名(确保具有目标路径的文件名也存在于目标位置中,否则您可以在其上写一个包装器以检查文件是否存在)。您能不能试一下。
#!/usr/bin/env python
list_of_files = ["/full/path/file1", "/full/path/file2", "/full/path/file3"]
for file in list_of_files:
awk_cmd = '''awk '/^>/{num=split(FILENAME,array,"/");print ">" substr(array[num],1,length(array[num])) ++i; next} 1' ''' + file + " > tmp$$ && mv tmp$$ " + file + \
" | cat files > 'pooled_file' "
exitcode = subprocess.call(awk_cmd, shell=True)
我还没有测试它,但是我已经按照完整路径对其进行了更改,因为awk
将使用文件名打印完整路径,因此我在代码中将FILENAME
更改为根据数组的位置,为了安全起见,还将tmp
临时文件更改为tmp$$
。