我有一个bash脚本,我想在OS X上使用launchd plist文件运行.我遇到的问题是bash脚本包含sudo命令,它阻止它运行.例如,我的bash脚本如下所示:
#!/bin/bash
sudo /opt/local/bin/bindfs -u user1 /Library/WebServer/Documents/user1 /vhosts/user1/public_html
sudo /opt/local/bin/bindfs -u user2 /Library/WebServer/Documents/user2 /vhosts/user2/public_html
Run Code Online (Sandbox Code Playgroud)
我的com.test.bindfs.plist文件看起来像这样(用Lingon创建):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>GroupName</key>
<string>admin</string>
<key>Label</key>
<string>com.jamespayne.bindfs</string>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/bindfs.sh</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud)
我已经检查过该脚本的工作原理是在启动后运行它并输入密码,但它不会在启动时运行.launchd plist正在运行,但它出现以下错误:
sudo:没有tty存在且没有指定askpass程序
任何人都知道如何使这个工作或为什么我可能会得到这个错误.谢谢.
我有一个python脚本,我纯粹用作模块.它有一个类和一些其他函数,使用以下方法导入到另一个python脚本:
from module import *
Run Code Online (Sandbox Code Playgroud)
该模块看起来像这样:
class myClass:
def __init__(self, something):
def someGetter(self):
return whatever
def someSetter(self):
def someSupportingFunction():
return whatever
def someOtherSupportingFunction():
return whatever
def main():
pass
if __name__ == '__main__':
main()
Run Code Online (Sandbox Code Playgroud)
我正在使用的脚本使用脚本中包含的类和其他函数.
这是否是实现不需要通过命令行使用的模块的合理方法?如果没有,那么实施它的最佳方式是什么?
根据我的阅读,使用*进行通配符导入是不受欢迎的.谢谢.