我想创建一个脚本来检查用户是否存在.我正在使用以下逻辑:
# getent passwd test > /dev/null 2&>1
# echo $?
0
# getent passwd test1 > /dev/null 2&>1
# echo $?
2
Run Code Online (Sandbox Code Playgroud)
因此,如果用户存在,那么我们就会成功,否则用户就不存在了.我在bash脚本中输入了以上命令,如下所示:
#!/bin/bash
getent passwd $1 > /dev/null 2&>1
if [ $? -eq 0 ]; then
echo "yes the user exists"
else
echo "No, the user does not exist"
fi
Run Code Online (Sandbox Code Playgroud)
现在,我的脚本总是说用户存在,无论如何:
# sh passwd.sh test
yes the user exists
# sh passwd.sh test1
yes the user exists
# sh passwd.sh test2
yes the user exists
Run Code Online (Sandbox Code Playgroud)
为什么上述条件总是评估为TRUE并说用户存在?
我哪里错了?
更新: …
我想通过powershell脚本检索Windows服务器的FQDN名称.到目前为止我找到了2个解决方案:
$server = Invoke-Command -ScriptBlock {hostname}
Run Code Online (Sandbox Code Playgroud)
上面的行只会打印服务器的简称
$sysinfo = Get-WmiObject -Class Win32_ComputerSystem
$server = “{0}.{1}” -f $sysinfo.Name, $sysinfo.Domain
Run Code Online (Sandbox Code Playgroud)
以上两行将获得FQDN但这看起来非常讨厌的代码只检索主机名:(
所以,我的问题是,是否有更简单的方法来获取PowerShell中的FQDN.我是一个bash/perl编码器,最近选择了PowerShell ..所以发现它很难.
谢谢.
我还没有遇到将在本地复制/移动文件的Chef资源.例如,我想下载jetty hightide并解压缩它.完成后,将所有文件复制到特定文件夹中,如下所示:
# mv /var/tmp/jetty-hightide-7.4.5.v20110725/* /opt/jetty/
Run Code Online (Sandbox Code Playgroud)
解压后,BTW,jettyhightide会给你一个文件夹,并在文件夹里面放置其余的文件.因此unzip jetty-hightide-7.4.5.v20110725.zip -d /opt/jetty/
它是无用的,因为它将创建一个目录,/opt/jetty/jetty-hightide-7.4.5.v20110725/*
而我真正想要的是/opt/jetty/*
.因此,我正在寻找Chef的本地复制/移动资源.
我有一个文本文件,其中包含我要复制的文件和目录列表(一行一行).现在我希望rsync从我的文本文件中获取此输入并将其同步到我提供的目标.
我已经尝试过使用"--include-from=FILE"
和"--file-from=FILE"
rsync的选项,但它只是无法正常工作
我也尝试"+"
在我的文件中的每一行预先修复,但它仍然无法正常工作.
我已尝试使用rsync手册页中概述的各种过滤器PATTERN,但它仍然无法正常工作.
有人可以为这个用例提供正确的语法.我已经在Fedora 15,RHEL 6.2和Ubuntu 10.04上尝试了以上的东西,但没有一个工作.所以我肯定错过了一些东西.
非常感谢.
我将凭据传递给Send-MailMessage
命令时遇到了困难
这就是我正在运行的:
Send-MailMessage -smtpServer smtp.gmail.com -from 'myself@gmail.com' `
-to 'myself@gmail.com' -subject 'Test' -attachment C:\CDF.pdf
Run Code Online (Sandbox Code Playgroud)
它错误显示在消息下方,这显然是因为我没有通过我的gmail凭据
Send-MailMessage : The SMTP server requires a secure connection or the client was not
authenticated. The server response was: 5.7.0 Must issue a STARTTLS command first.
Run Code Online (Sandbox Code Playgroud)
我google了一下,也浏览了手册页,Send-MailMessage
发现需要传递"-credential"参数.
我的问题是:怎么样?
我尝试使用Get-Credentials,如下所示:
$mycredentials = Get-Credential
Run Code Online (Sandbox Code Playgroud)
然后在弹出的框中输入我的用户名和密码.
然后我运行以下命令:
Send-MailMessage -smtpServer smtp.gmail.com -credentail $mycredentials `
-from 'myself@gmail.com' -to 'myself@gmail.com' -subject 'Test' -attachment C:\CDF.pdf
Run Code Online (Sandbox Code Playgroud)
并且它仍然以完全相同的错误失败.
所以我需要你们帮助我们如何将我的证书传递给Send-MailMessage
命令.我了解了PScredentials,但不完全确定它是什么以及如何在这种情况下使用它.
我是新手厨师,面临一个问题.
每次我运行任何刀具菜单命令,我必须明确提供使用-o /path/to/cookbook
其他菜谱的路径它会错误地说没有找到烹饪书.请找到以下命令:
$ knife cookbook upload getting-started
ERROR: Could not find cookbook getting-started in your cookbook path, skipping it
ERROR: Failed to upload 1 cookbook.
$ knife cookbook upload getting-started -o /home/chefuser/chef11/chef-repo/cookbooks/
Uploading getting-started [0.4.0]
Uploaded 1 cookbook.
Run Code Online (Sandbox Code Playgroud)
问题:
我想知道/列出cookbook的默认搜索路径,并且需要知道如何修改它.
另外,为什么它没有看菜谱路径,我必须明确提供它?
谢谢.
我刚刚在我的Ubuntu上发现Perl并没有抱怨最后的分号.检查以下代码:
#!/usr/bin/perl
use warnings;
use strict;
my @array = (1, 2, 3, 4);
foreach (@array)
{
print $_."\n"
}
print "no, this cant be true"
Run Code Online (Sandbox Code Playgroud)
请注意分号";" print语句中缺少.代码运行良好.
OUTPUT:
1
2
3
4
no, this cant be true
Run Code Online (Sandbox Code Playgroud)
如果我在打印后加分号,它仍然有效.所以这让我很困惑.
你能帮我理解我在这里缺少什么,还是有一些我忽略的明显的Perl意识形态?
我有一个CSV.我想编辑CSV的第35个字段并将更改写回第35个字段.这就是我在bash上所做的事情:
awk -F "," '{print $35}' test.csv | sed -i 's/^0/+91/g'
Run Code Online (Sandbox Code Playgroud)
所以,我使用awk拉出第35个条目,然后用"+91"替换字符串中起始位置的"0".这个工作perfet我在控制台上获得所需的输出.
现在我想要将这个新条目写入文件中.我正在考虑sed的"in -place"替换功能,但这个胎儿需要和输入文件.在上面的命令中,我无法提供输入文件,因为我的主命令是awk而sed正在从awk获取输入.
谢谢.
我是AWS和Postgresql的新手.
我尝试使用数据管道,但Postgres似乎没有任何可用的(模板).我无法弄清楚如何连接到我的RDS实例并从postgres导入/导出数据.
我假设我可以使用EC2从我的S3存储桶中获取并导入Postgres,而不是没有可用的数据管道模板.如果有可能我不知道如何..请尽可能建议..
当我在命令下运行时,我得到下面提到的错误:
$ knife node edit hostname.domain.com
ERROR: You must set your EDITOR environment variable or configure your editor via knife.rb
Run Code Online (Sandbox Code Playgroud)
我想在knife.rb中设置编辑器值,但我无法找到与编辑器对应的选项.我已经通过以下链接解释了knife.rb支持的各种选项:
http://docs.opscode.com/config_rb_knife.html
http://docs.opscode.com/config_rb_knife_optional_settings.html
我知道我没有忽略上面的链接,但我可以;找不到与设置编辑器值相关的选项.
你能指点我正确的选择,这将有助于我设置编辑刀.
谢谢.
chef-infra ×3
powershell ×2
amazon-ec2 ×1
amazon-s3 ×1
awk ×1
bash ×1
chef-solo ×1
perl ×1
postgresql ×1
rsync ×1
sed ×1
semantics ×1
windows ×1