我正在尝试运行一个非常简单的剧本来测试一个新的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运行.
我已经尝试了很多不同的变化,但却无法让它发挥作用.
我有一个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 >> /Users/ilium007/support/scripts/handbrake/logs/handbrake_encode.log</string>
<!--<string>>></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>>></string>
<string>/Users/ilium007/support/scripts/handbrake/logs/handbrake_encode.log</string> …Run Code Online (Sandbox Code Playgroud) 我发现自己再次被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) 我遇到了一些奇怪的行为(很可能并不奇怪,但我不明白!)
我想用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)
我只想说'真'.
在&& ||的方式中是否有我遗漏的东西 语句处理函数的退出代码?