小编ili*_*007的帖子

Ansible 1.9.1'成为'和sudo问题

我正在尝试运行一个非常简单的剧本来测试一个新的Ansible设置.

在我的ansible.cfg文件中使用'new'Ansible Privilege Escalation配置选项时:

[defaults]

host_key_checking=false

log_path=./logs/ansible.log
executable=/bin/bash

#callback_plugins=./lib/callback_plugins

######

[privilege_escalation]
become=True
become_method='sudo'
become_user='tstuser01'
become_ask_pass=False

[ssh_connection]
scp_if_ssh=True
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

fatal: [webserver1.local] => Internal Error: this module does not support running commands via 'sudo'

FATAL: all hosts have already failed -- aborting
Run Code Online (Sandbox Code Playgroud)

剧本也很简单:

# Checks the hosts provisioned by midrange
---
- name: Test su connecting as current user
  hosts: all
  gather_facts: no
  tasks:
  - name: "sudo to configued user -- tstuser01"
    #action: ping
    command: /usr/bin/whoami
Run Code Online (Sandbox Code Playgroud)

我不确定Ansible 1.9.1中是否有什么东西坏了,或者我做错了什么.当然,Ansible中的'command'模块允许将命令作为sudo运行.

bash sudo ansible ansible-playbook

14
推荐指数
2
解决办法
4万
查看次数

如何将OSX launchd plist的参数添加到管道输出到日志文件?

我已经尝试了很多不同的变化,但却无法让它发挥作用.

我有一个plist文件:

<?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>Label</key>
        <string>com.ilium007.handbrake</string>
        <key>ProgramArguments</key>
        <array>
                <string>/bin/bash</string>
                <string>/Users/ilium007/support/scripts/handbrake/handbrake.sh &gt;&gt; /Users/ilium007/support/scripts/handbrake/logs/handbrake_encode.log</string>
                <!--<string>&gt;&gt;</string>-->
                <!--<string>/Users/ilium007/support/scripts/handbrake/logs/handbrake_encode.log</string>-->
        </array>
        <key>RunAtLoad</key>
        <true/>
        <key>StartInterval</key>
        <integer>60</integer>
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud)

请注意那里的评论.

我想将handbrake.sh脚本的输出管道传输到日志文件,并尝试这样做,但在OSX上的system.log中不断出现"无此文件"错误.

Nov  3 18:03:54 macmini com.ilium007.handbrake[15348]: /bin/bash: /Users/ilium007/support/scripts/handbrake/handbrake.sh >> /Users/ilium007/support/scripts/handbrake/logs/handbrake_encode.log: No such file or directory Nov  3 18:03:54 macmini com.apple.launchd.peruser.501[162] (com.ilium007.handbrake[15348]): Exited with code: 127
Run Code Online (Sandbox Code Playgroud)

如果我将plist更改为以下,它会运行,但我没有记录,所以我假设它只运行第一个参数:

<?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>Label</key>
        <string>com.ilium007.handbrake</string>
        <key>ProgramArguments</key>
        <array>
                <string>/bin/bash</string>
                <string>/Users/ilium007/support/scripts/handbrake/handbrake.sh</string>
                <string>&gt;&gt;</string>
                <string>/Users/ilium007/support/scripts/handbrake/logs/handbrake_encode.log</string> …
Run Code Online (Sandbox Code Playgroud)

macos bash scripting launchd

3
推荐指数
3
解决办法
8048
查看次数

Arduino字符串和字符和指针等

我发现自己再次被C字符串,字符等混淆了.

这是我用来测试Arduino语法的一些代码.我知道*message)buff会给我一个指针(我仍然不知道为什么我需要使用指针,但我可以对它进行一些研究!),我将*message_buff转换为String(只是为了做某事) ,但请注意,稍后当我尝试将此字符串打印到序列时,我只获得一个'c'字符).

我设置一个数组指针3个元素长(3个字节长???我真的不知道):

char *mqtt_command[3] = {};
Run Code Online (Sandbox Code Playgroud)

以及当我尝试使用以下方法向数组添加值时:

*mqtt_command[i] = str;
Run Code Online (Sandbox Code Playgroud)

我收到错误:

error: invalid conversion from 'char*' to 'char'
Run Code Online (Sandbox Code Playgroud)

如果我改为:

mqtt_command[i] = str;
Run Code Online (Sandbox Code Playgroud)

(没有*)它编译得很好.我不知道为什么......

这是我的代码:

char *message_buff = "command:range:1";
char *str;
String msgString = String(*message_buff);
char *mqtt_command[3] = {};
int i = 0;

void setup()
{
  Serial.begin(9600);
  delay(500);

  while ((str = strtok_r(message_buff, ":", &message_buff)) != NULL)
  {
    Serial.println(str);
    mqtt_command[i] = str;
    i++;
  }

  delay(1000);

  Serial.print("Command: ");
  Serial.println(mqtt_command[1]);

  Serial.print("MQTT string: ");
  Serial.println(msgString);
}

void loop()
{
  //do something here later …
Run Code Online (Sandbox Code Playgroud)

c arrays arduino char

3
推荐指数
1
解决办法
2万
查看次数

有人可以解释这些Python字符串格式化程序

我对Python字符串格式化程序%d和%i之间的区别感到困惑.Python手册页将它们解释为同样的事情,'带符号整数十进制 ' - 混淆了!

Python字符串格式化程序

从Python的"内置类型"页面

python string string-formatting python-2.7

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

使用bash的正确方法是if else && || 捷径?

我遇到了一些奇怪的行为(很可能并不奇怪,但我不明白!)

我想用bash简写语法编写一些if/e,se语句:

[[ 1 -eq 1 ]] && echo "true" || echo "false"
Run Code Online (Sandbox Code Playgroud)

上面代码的输出给出:

true
Run Code Online (Sandbox Code Playgroud)

现在上面的代码实际上工作正常.但是下一个代码不会:

[[ 1 -eq 1 ]] && infMsg "true" || infMsg "false"
Run Code Online (Sandbox Code Playgroud)

infMsg只是一个功能.上面代码的输出给出:

true
false
Run Code Online (Sandbox Code Playgroud)

我只想说'真'.

在&& ||的方式中是否有我遗漏的东西 语句处理函数的退出代码?

bash if-statement

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