小编sla*_*fer的帖子

检查用户是否存在

我想创建一个脚本来检查用户是否存在.我正在使用以下逻辑:

# 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并说用户存在?

我哪里错了?

更新: …

bash

143
推荐指数
10
解决办法
18万
查看次数

Powershell:获取FQDN主机名

我想通过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 ..所以发现它很难.

谢谢.

windows powershell

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

如何使用Chef在本地移动/复制文件

我还没有遇到将在本地复制/移动文件的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的本地复制/移动资源.

chef-infra

50
推荐指数
4
解决办法
6万
查看次数

从文件读取输入并相应地进行同步

我有一个文本文件,其中包含我要复制的文件和目录列表(一行一行).现在我希望rsync从我的文本文件中获取此输入并将其同步到我提供的目标.

我已经尝试过使用"--include-from=FILE""--file-from=FILE"rsync的选项,但它只是无法正常工作

我也尝试"+"在我的文件中的每一行预先修复,但它仍然无法正常工作.

我已尝试使用rsync手册页中概述的各种过滤器PATTERN,但它仍然无法正常工作.

有人可以为这个用例提供正确的语法.我已经在Fedora 15,RHEL 6.2和Ubuntu 10.04上尝试了以上的东西,但没有一个工作.所以我肯定错过了一些东西.

非常感谢.

rsync

36
推荐指数
2
解决办法
6万
查看次数

如何将凭据传递给Send-MailMessage命令以发送电子邮件

我将凭据传递给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,但不完全确定它是什么以及如何在这种情况下使用它.

powershell

34
推荐指数
6
解决办法
16万
查看次数

cookbook的默认搜索路径

我是新手厨师,面临一个问题.

每次我运行任何刀具菜单命令,我必须明确提供使用-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的默认搜索路径,并且需要知道如何修改它.

另外,为什么它没有看菜谱路径,我必须明确提供它?

谢谢.

chef-infra chef-solo

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

Perl并没有抱怨丢失分号

我刚刚在我的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意识形态?

perl semantics

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

就地更换

我有一个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获取输入.

谢谢.

awk sed

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

如何将数据文件从s3导入到postgresql rds

我是AWS和Postgresql的新手.

  1. 我创建了一个Postgresql数据库(使用rds)
  2. 我已将多个文档上传到多个s3存储桶
  3. 我正在运行EC2(Amazon Linux 64位)

我尝试使用数据管道,但Postgres似乎没有任何可用的(模板).我无法弄清楚如何连接到我的RDS实例并从postgres导入/导出数据.

我假设我可以使用EC2从我的S3存储桶中获取并导入Postgres,而不是没有可用的数据管道模板.如果有可能我不知道如何..请尽可能建议..

postgresql amazon-s3 amazon-ec2

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

厨师:如何为刀设置EDITOR

当我在命令下运行时,我得到下面提到的错误:

$ 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

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