AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-304183

iamAguest's questions

Martin Hope
iamAguest
Asked: 2018-09-21 07:04:39 +0800 CST

我应该如何在 Puppet 中使用引用和回声?

  • -1

我正在尝试echo在 Puppet 规则中使用来添加一行.bashrc,但我似乎无法正确引用。

'/usr/bin/echo -E PS1=\"[\t--------------------------------------------------------\n-\u@\h:\W]\$\" >> /home/unu/.bashrc'

这件事给了我以下结果:

PS1="[t--------------------------------------------------------n-u@h:W]$"

另一种尝试:

'/usr/bin/echo -E PS1="[\t--------------------------------------------------------\n-\u@\h:\W]\$" >> /home/unu/.bashrc'

这件事给了我以下信息:

PS1=[\t--------------------------------------------------------\n-\u@\h:\W]$

另一个:

'/usr/bin/echo -e PS1="[\\t--------------------------------------------------------\\n-\\u@\\h:\\W]\\$" >> /home/unu/.bashrc'

这个给了我这个:

PS1=[   --------------------------------------------------------
-\u@\h:\W]$

\如果没有或"以某种方式解释,我似乎无法找到一种方法来做到这一点。我该怎么做?

我想过使用更多引号,但这会导致 Puppet 出现语法错误:

"/usr/bin/echo -e 'PS1="[\\t--------------------------------------------------------\\n-\\u@\\h:\\W]\\$"' >> /home/unu/.bashrc"

得到这个结果:

Error: Could not retrieve catalog from remote server: Error 500 on SERVER: Server Error: Syntax error at '' (file: /etc/puppetlabs/code/environments/production/modules/profile/manifests/ps1.pp, line: 3, column: 38) on node centoslave1

这是整个代码:

class profile::ps1 {
        exec { 'myps1':
        command => "/usr/bin/echo -e 'PS1="[\\t--------------------------------------------------------\\n-\\u@\\h:\\W]\\$"' >> /home/unu/.bashrc"
        }
}
bash echo
  • 4 个回答
  • 1374 Views
Martin Hope
iamAguest
Asked: 2018-09-20 05:19:26 +0800 CST

以 sudo 运行时找不到命令

  • 3

我正在运行centos7。我安装了木偶。如果我以用户身份写作puppet,我会得到正确的输出。如果我写sudo puppet我得到command not found.

真正奇怪的是,如果我这样做sudo su -并成为 root,然后 write puppet,我会得到与普通用户一起运行它时得到的正常输出......

[unu@centosmaster puppet]$ puppet
See 'puppet help' for help on available puppet subcommands
[unu@centosmaster puppet]$ sudo puppet
sudo: puppet: command not found
[unu@centosmaster puppet]$ sudo su -
Last login: Wed Sep 19 08:41:20 EDT 2018 on pts/0
[root@centosmaster ~]# puppet
See 'puppet help' for help on available puppet subcommands

对我来说,这完全没有意义......

对于 root 用户和普通用户,该$PATH变量是相同的。

sudo path
  • 1 个回答
  • 3058 Views
Martin Hope
iamAguest
Asked: 2018-09-18 00:40:16 +0800 CST

Puppet 代理不从正则表达式运行清单

  • 0
node 'node-slave01' {
        include repo::git
        include fun::cmatrix
}
node 'node-slave02' {
        include repo::hg
        include fun::toilet
}
node 'node-slave03' {
        include fun::rup
        include repo::svn
        include fun::cmatrix
}
node 'node-slave04' {
        include repo::git
        include repo::hg
        include repo::svn
        include fun::cmatrix
        include fun::toilet
}
node /node-slave\d+/ {
        include lamp
        include test
        include fun::rup
        include sup
}

因此,所有内容都/node-slave\d+/不会运行。如果我将sup模块放在 4 个节点中的任何一个节点下,它会在我编写后运行sudo puppet agent --test,但如果它在正则表达式下则不会。

如果我想让某些节点做某些事情,但有一些命令我希望它们全部执行,我该怎么做?在每个节点下写include sup似乎非常烦人。

puppet
  • 1 个回答
  • 31 Views
Martin Hope
iamAguest
Asked: 2018-08-30 23:30:32 +0800 CST

AWS 实例允许我在没有密码的情况下第一次使用私钥进行 ssh

  • -1

这不是关于在服务器上复制公钥然后 ssh-ing,如果你打算这样做的话。

所以我做了一个 AWS Linux 实例,我做了一个 ssh 密钥对,它自动下载了私钥。

现在我可以通过简单的方式连接到我的 AWS Linux 实例:

ssh -i key_they_gave_me ec2-user@AWSinstanceIP

我如何为我自己的 Linux 虚拟机设置这种东西?这样有人就可以使用私钥 ssh 进入它,而不需要密码?

编辑:我不是在谈论复制 id_rsa.pub。我知道该怎么做,而 AWS 实例不需要这样做。这就是我想要的。

ssh
  • 3 个回答
  • 146 Views
Martin Hope
iamAguest
Asked: 2018-08-24 06:44:50 +0800 CST

Tar crontab 不工作,而命令自己工作 [重复]

  • 0
这个问题在这里已经有了答案:
这两个 cron 作业有什么问题? (3 个回答)
4年前关闭。

我有这个 crontab

* * * * * tar -czf /backup/$(date +%F--%T)-localusers.tgz /vagrant

这没用。但如果我这样做

tar -czf /backup/$(date +%F--%T)-localusers.tgz /vagrant/

有用。

有人知道发生了什么吗?我确实不断收到邮件:

N 10 (Cron Daemon) Thu Aug 23 10:43 28/1130 "Cron <root@localhost> tar -czf"

tar cron
  • 1 个回答
  • 1068 Views
Martin Hope
iamAguest
Asked: 2018-08-24 04:18:57 +0800 CST

如果创建存档时不存在,如何让 tar 创建一个文件夹

  • 0

tar 是否有任何选项,在创建存档时,如果目标目录不存在,它会自行创建它?

所以我有文件夹/1/2,但我没有文件夹/1/2/3/。有什么选择可以让 tar 能够做到吗?

我需要它作为脚本,但如果没有选择,做这样的事情会更好吗?

mkdir /1/2/3/ &> /dev/null

如果该文件夹不存在,它将被创建,但如果它已经存在,我将不会收到错误消息,因为我将其全部推入 null。

现在用这种方法,有什么可能出错的吗?

基本上,我正在制作一个删除用户的脚本,但您可以在脚本删除用户之前选择一个选项来归档他们的主目录。为了使脚本在其他机器上可用,我必须创建一个名为 的文件夹/archives,该文件夹可能存在也可能不存在于其他机器上。

由于 tar 显然无法递归地创建您为存档指定的任何路径(例如,/archives/users如果您编写tar -czf /archives/users/user1.tgz /home/user1/if/archives不存在,它将无法创建。

这让我想到了关于我的解决方案的问题:写作mkdir -p /archives/users/ &> /dev/null. 这会搞砸什么吗?请记住,此脚本只能使用 sudo 运行,因为它是一个用户删除脚本。

directory tar
  • 2 个回答
  • 6956 Views
Martin Hope
iamAguest
Asked: 2018-08-23 23:42:48 +0800 CST

将读取命令的输入视为命令本身

  • 1

假设我在脚本中定义了这个函数:

fct1() {
  local msg1=${@}
if [[ "${verb}" = 'tru' ]]; then
  echo "I say $msg1"
  sleep 1
  echo "i repeat"
  sleep 1
  echo "I saaaaaaaaay $msg1"
else
  echo "$msg1"
fi
}

我将如何让用户从 调用此函数read?

我在想类似的东西

read fct1 "aha aha ahaaaaa"

输出将是:

"I say aha aha ahaaaaa" "I repeat" "I saaaaaaaaay aha aha ahaaaaa"

基本上,我如何使用输入read而不是将其存储在变量中,而是将其用作命令?

谢谢。

bash shell-script
  • 3 个回答
  • 126 Views
Martin Hope
iamAguest
Asked: 2018-08-23 03:45:10 +0800 CST

如果将字符串与 -eq [duplicate] 进行比较时,If 语句适用于 [ 但不适用于 [[

  • 0
这个问题在这里已经有了答案:
“算术扩展”是 `[[` 测试中对 vars 的预期操作吗? (3 个答案)
4年前关闭。

我的代码:

#!/bin/bash

x=${#}

for (( a=0; a<x; ++a)); do
   if [[ $1 -eq $1 ]] 2> /dev/null
   then
      variable[a]=${1}
      shift
   else
      echo "The argument $1 is NOT an integer. Aborting this"
      exit 1
   fi
done
TOTAL=0
for (( a=0; a<x; ++a)); do
      echo "TOTAL : ${TOTAL}"
      TOTAL=$((TOTAL+variable[a]))
done
echo "Everything accounted to $TOTAL"
exit 0

所以基本上它接受脚本的参数并将它们相加。如果其中一个参数不是整数,它应该告诉您并退出脚本。

它现在的方式不会告诉我参数之一是否不是整数,它只是跳过它。所以给它参数 123 123 123 asdt,我得到以下信息:

vagrant@localhost vagrant]$./super.sh 123 123 123 asdt
TOTAL : 0
TOTAL : 123
TOTAL : 246
TOTAL : 369
Everything accounted to 369
[07:43----------------------------------------
vagrant@localhost vagrant]$

但是如果我把它改成这样:

for (( a=0; a<x; ++a)); do
   if [ $1 -eq $1 ] 2> /dev/null
   then

它有效,我明白了:

vagrant@localhost vagrant]$./super.sh 123 123 123 asdt
The argument asdt is NOT an integer. Aborting this
[07:44----------------------------------------
vagrant@localhost vagrant]$

为什么会这样?

bash test
  • 1 个回答
  • 111 Views
Martin Hope
iamAguest
Asked: 2018-08-23 00:21:02 +0800 CST

调用函数时出现语法错误

  • 2

所以我尝试在脚本中创建一个函数,在运行脚本时为每个参数创建一个新变量。这是我的代码:

#!/bin/bash

# Creating function log
#ARG1=${1}

log() {
  echo "You called DA LOG FUNCTION!!!1!!11one111!"
}

log

#echo "${1}"
#echo "$ARG1"

fcta() {
  for ((x=0;x<1000;++x)); do
   "a$x"=${1}
   if [[ ${#} -gt 1 ]]; then
     shift
   else
     x=1001
   fi
  echo "${a$x}"
#  echo "${1}"
}

fcta $@

我明白了:

vagrant@localhost vagrant]$./luser-demo10.sh 12 12 12
You called DA LOG FUNCTION!!!1!!11one111!
./luser-demo10.sh: line 25: syntax error near unexpected token `}'
./luser-demo10.sh: line 25: `}'
[04:11----------------------------------------
vagrant@localhost vagrant]$

这是第 25 行

#  echo "${1}"
} <----- LINE 25

fcta $@

编辑:感谢您告诉我丢失的“完成”。人们问我想做什么,好吧,我问了另一个问题,因为这个问题已经得到解答(问题是,为什么我会收到语法错误)。再次感谢。

bash function
  • 2 个回答
  • 1474 Views
Martin Hope
iamAguest
Asked: 2018-08-21 05:47:33 +0800 CST

wc -c 给了我一个额外的字符数

  • 4

所以我做了一个向系统添加用户的脚本,我想强制用户名的长度为 8 个字符或以下。

#!/bin/bash
# Only works if you're root

for ((a=1;a>0;a)); do
 if [[ "$UID" -eq 0 ]]; then
  echo "Quit this shit anytime by pressing CTRL + C"
  read -p 'Enter one usernames: ' USERNAME
  nrchar=$(echo ${USERNAME} | wc -c)
  echo $nrchar
  spcount=$(echo ${USERNAME} | tr -cd ' ' | wc -c)
  echo $spcount
  if [[ "${nrchar}" -ge 8 ]]; then
    echo "You may not have more than 8 characters in the username"
   elif [[ "${spcount}" -gt 0 ]]; then
    echo "The username may NOT contain any spaces"
   else
     read -p 'Enter one names of user: ' COMMENT
     read -s -p 'Enter one passwords of user: ' PASSWORD
     useradd -c "${COMMENT}" -m ${USERNAME}
     echo ${PASSWORD} | passwd --stdin ${USERNAME}
     passwd -e ${USERNAME}
   fi
 echo "------------------------------------------------------"
 else
  echo "You're not root, so GTFO!"
  a=0
 fi
done

这是完整的脚本,但我认为问题只出在某个地方:

  read -p 'Enter one usernames: ' USERNAME
  nrchar=$(echo ${USERNAME} | wc -c)
  echo $nrchar

所以问题是,每当我输入一个 8 个字符的用户名时,nrchar 变量似乎总是会再添加一个字符,如下所示:

[vagrant@localhost vagrant]$ sudo ./exercise2-stuffs.sh
Quit this shit anytime by pressing CTRL + C
Enter one usernames: userdoi1
9
0
You may not have more than 8 characters in the username
------------------------------------------------------
Quit this shit anytime by pressing CTRL + C
Enter one usernames: ^C
[vagrant@localhost vagrant]$ 

即使我将其留空,它仍然以某种方式计算一个字符:

[vagrant@localhost vagrant]$ sudo !.
sudo ./exercise2-stuffs.sh
Quit this shit anytime by pressing CTRL + C
Enter one usernames:
1
0
Enter one names of user:

如何识别这个问题?

bash shell
  • 2 个回答
  • 4330 Views
Martin Hope
iamAguest
Asked: 2018-08-17 23:32:13 +0800 CST

rsyslog 只在 /var/logs 中创建日志文件

  • 1

运行 centos 7,我的 rsyslog.conf 看起来像这样:

 59 # Log all the mail messages in one place.
 60 mail.* /var/log/maillog
 61 mail.* /var/log/logtest1
 62 mail.* /root/logtest

然后我像这样使用记录器命令:

logger -p mail.err "this is one logsdsdfgsdfgdfsg"

现在这是写在/var/log/maillogand/var/log/logtest1中,但不是写在/root/logtest.

我也运行systemctl restart rsyslog并重新启动了我的系统几次。

这是故意的,还是一个错误?无论哪种方式,我如何强制它在我想要的任何地方写我的日志?

linux centos
  • 1 个回答
  • 279 Views
Martin Hope
iamAguest
Asked: 2018-08-08 05:53:23 +0800 CST

我在这里做错了什么(循环问题)

  • 0

这东西在这里

n=0
x=1
while [ $n -lt 6 ]
do
         n=$(( n+1 ))
         echo "sasadgsad gsda $n" >> /home/test/rptest

if [ $n -eq 5 ]
   then
      while [ $x -le 5 ]
      do
         echo "end of line$x" >> /home/test/rptest
         x=$(( x+1 ))
      done
 fi
done

输出这个东西

sasadgsad gsda 1
sasadgsad gsda 2
sasadgsad gsda 3
sasadgsad gsda 4
sasadgsad gsda 5
end of line1
end of line2
end of line3
end of line4
end of line5
sasadgsad gsda 6

第 11 行不应该在那里......当 n = 5 时,第一件事不应该完成吗?为什么它会创建最后一行?

感谢您的帮助 :)

我什至用 n=1 和 while [ $n -le 5 ] 尝试过

linux shell-script
  • 1 个回答
  • 50 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve