小编jpa*_*yne的帖子

在bash脚本中运行sudo命令并使用launchd运行它

我有一个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程序

任何人都知道如何使这个工作或为什么我可能会得到这个错误.谢谢.

macos bash launchd

6
推荐指数
2
解决办法
4383
查看次数

是否可以在其中使用带有pass语句的def main()用于python模块

我有一个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)

我正在使用的脚本使用脚本中包含的类和其他函数.

这是否是实现不需要通过命令行使用的模块的合理方法?如果没有,那么实施它的最佳方式是什么?

根据我的阅读,使用*进行通配符导入是不受欢迎的.谢谢.

python

0
推荐指数
1
解决办法
1089
查看次数

标签 统计

bash ×1

launchd ×1

macos ×1

python ×1