小编Suz*_*rts的帖子

如何在Ansible Playbook上以sudo模式运行命令?

我试图在我的ansible剧本上运行“创建文件夹”命令。(代码如下)

创建需要sudo登录才能执行。

我按照以下方式运行剧本:

ansible-playbook myfile.yml --ask-pass

这提示输入远程计算机的用户帐户密码。ssh连接已建立,但是命令失败,权限被拒绝,因为它没有使用超级用户密码。

我该如何解决我的问题?

 hosts: GSP
 tasks:
   - name: "make build directory"
     command: mkdir -p /home/build/
     become: true
     become_user: root
   - name: "change permissions on the directory"
     command: chmod 777 -R /home/
     become: true
     become_user: root
Run Code Online (Sandbox Code Playgroud)

ansible ansible-2.x

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

yaml.load() 函数中的 loader 参数有什么作用?

我正在编写一个代码来读取 YAML 文件作为输入。我Loaderyaml.load通话中看到以下选项:BaseLoader, SafeLoader, FullLoader, UnsafeLoader

这些选项有什么作用?如以下文档页面所述,加载完整的 YAML 语言意味着什么?

https://github.com/yaml/pyyaml/wiki/PyYAML-yaml.load(input)-Deprecation

yaml pyyaml

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

使用 capsys 捕获 stdout 和 stderr

我有一个代码,我需要检查输入的密码是否为空。如果是,则打印消息并退出脚本。

我正在使用pytest验证此代码并使用固定装置捕获输出capsys。但capsys.readouterr()没有捕获输出。

要测试的代码

def get_password():
    password = getpass.getpass('Password required :', stream=None)
    if not password:
        print("NoPasswordError: Password not provided.Exiting from run")
        '''return -1'''
        sys.exit(-1)
    else:
        return password
Run Code Online (Sandbox Code Playgroud)

py测试代码

def test_input_validation_nopass(self,getpass,capsys):
    getpass.return_value = ''
    get_password()
    out, err = capsys.readouterr()
    sys.stdout.write(out)
    assert re.match('NoPasswordError',out,re.I)
Run Code Online (Sandbox Code Playgroud)

但是,如果我删除sys.exit并放置return,则会捕获输出。目前我收到以下错误:

pytest -q UnitTest.py -k test_input_validation_nopass -rx -rP
F                                                                                                                                                                 [100%]
=============================================================================== FAILURES ================================================================================
________________________________________________________________ TestClass.test_input_validation_nopass _________________________________________________________________

self = <UnitTest_buildUpgrade.TestClass object at 0x10d179978>, getpass = <MagicMock name='getpass' id='4514617832'>
capsys = <_pytest.capture.CaptureFixture …
Run Code Online (Sandbox Code Playgroud)

python stdout pytest python-3.x

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

索引 perl 数组

我有下面的代码

@ar1 = ('kaje','beje','ceje','danjo');
$m = 'kajes';
my($next) = grep $_ eq 'kaje',@ar1;
print("Position is $next\n");
print("Next is $ar1[$next+1]\n");
print("Array of c is $ar1[$m+3]\n");
print("Array at m is $ar1[$m]\n");
Run Code Online (Sandbox Code Playgroud)

看到的输出:

Position is kaje
Next is beje
Array of c is danjo
Array at m is kaje
Run Code Online (Sandbox Code Playgroud)

我想了解这是如何运作的。这里 $next 是匹配的字符串,我可以为给定的数组对该字符串进行索引。此外,在数组中找不到 $m,但我们将输出作为数组的第一个元素。

arrays indexing perl

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

标签 统计

ansible ×1

ansible-2.x ×1

arrays ×1

indexing ×1

perl ×1

pytest ×1

python ×1

python-3.x ×1

pyyaml ×1

stdout ×1

yaml ×1