mixlib-shellout, 用于子流程管理输出收集的混合库

分享于 

5分钟阅读

GitHub

  繁體 雙語
mixin library for subprocess management, output collection
  • 源代码名称:mixlib-shellout
  • 源代码网址:http://www.github.com/chef/mixlib-shellout
  • mixlib-shellout源代码文档
  • mixlib-shellout源代码下载
  • Git URL:
    git://www.github.com/chef/mixlib-shellout.git
    Git Clone代码到本地:
    git clone http://www.github.com/chef/mixlib-shellout
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/chef/mixlib-shellout
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    Mixlib::ShellOut

    Build Status MasterBuild Status MasterGem Version

    在仍然收集标准out标准错误并提供对环境。工作目录。uid。gid等的完全控制时,提供了简化的接口。

    没有提供将输入传递给子流程的方法。

    示例

    简单 Shellout

    调用 find(1) 以搜索. rb 文件:

    require'mixlib/shellout' find =Mixlib::ShellOut.new("find. -name '*.rb'")
     find.run_command

    如果一切顺利,结果就在 stdout

    puts find.stdout

    find(1) 将诊断信息输出到 STDERR:

    puts"error messages"+ find.stderr

    如果异常未以 0退出,则引发异常

     find.error!

    高级 Shellout

    除了运行命令之外,还可以设置其他选项来更改ShellOut行为。 可以在以下位置找到完整的选项列表: https://github.com/chef/mixlib-shellout/blob/master/lib/mixlib/shellout.rb

    www 用户的身份运行命令,但 /tmp 中没有额外的ENV设置,超时时间为 1s

     cmd =Mixlib::ShellOut.new("apachectl", "start", :user => 'www', :env => nil, :cwd => '/tmp', :timeout => 1)
     cmd.run_command # etc.

    标准示例

    调用crontab来编辑用户 cron:

    # :input only supports simple strings crontab_lines = [ "* * * * */bin/true", "* * * * * touch/tmp/here" ]
     crontab =Mixlib::ShellOut.new("crontab -l -u #{@new_resource.user}", :input => crontab_lines.join("n"))
     crontab.run_command

    Windows 模拟示例

    调用" whoami.exe"以演示作为另一个用户运行命令:

     whoami =Mixlib::ShellOut.new("whoami.exe", :user => "username", :domain => "DOMAIN", :password => "password")
     whoami.run_command

    使用提升的特权调用" whoami.exe":

     whoami =Mixlib::ShellOut.new("whoami.exe", :user => "username", :domain => "DOMAIN", :password => "password", :elevated => true)
     whoami.run_command

    注意:用户'管理员'必须具有'以批处理作业的形式登录'权限并且用户厨师运行,因为必须有'替换进程级别标记'和'调整进程的内存配额'权限。

    平台支持

    Mixlib::ShellOut 在Unix上执行标准 fork/exec,并在 Windows 上使用 WIN32 API。 目前尚不支持 JRuby。

    请参见

    有关帮助这里项目的信息,请参阅 https://github.com/chef/chef/blob/master/CONTRIBUTING.md

    许可证

    • 版权所有:版权所有( c ) 2011 -2016主厨软件公司。
    • 许可证:: Apache许可,版本 2.0
    
    Licensed under the Apache License, Version 2.0 (the"License");
    
    
    you may not use this file except in compliance with the License.
    
    
    You may obtain a copy of the License at
    
    
    
     http://www.apache.org/licenses/LICENSE-2.0
    
    
    
    Unless required by applicable law or agreed to in writing, software
    
    
    distributed under the License is distributed on an"AS IS" BASIS,
    
    
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    
    
    See the License for the specific language governing permissions and
    
    
    limitations under the License.
    
    
    
    

    MAN  COL  Collect  collection  OUT  输出  
    相关文章