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
    • 最新
    • 标签
主页 / server / 问题

问题[shell](server)

Martin Hope
Michaelzh
Asked: 2023-10-30 11:22:58 +0800 CST

为什么文件夹下的可执行文件(模式 x 标记)无法运行?

  • 5

我以为我的 /data 文件夹下的脚本文件无法执行是因为没有设置 'x' 权限,但是 chmod +x 后,它仍然无法运行,即使我手工制作的简单测试脚本放在 / 下也无法运行数据文件夹。还需要检查什么?投诉许可被拒绝。

build$ lsattr /data
-------------e-- /data/plug
-------------e-- /data/lost+found
-------------e-- /data/qt-6.6.0-base

build$ lsattr -d /data
-------------e-- /data

build$ ls -ld /data
drwxr-xr-x 6 gw root 4096 Oct 30 14:14 /data

build$ ls -l /data/script
-rwxrwxr-x 1 gw gw 22 Oct 30 14:14 /data/script

$ sh /data/script
aaa
$ /data/script
bash: /data/script: Permission denied
$ cat /data/script
#!/bin/sh

echo 'aaa'
$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Apr 19  2020 /bin/sh -> dash

磁盘描述:ATA 磁盘,产品:ST1000DM010-2EP1,供应商:Seagate,物理 ID:0.0.0,总线信息:scsi@3:0.0.0

shell
  • 1 个回答
  • 56 Views
Martin Hope
Nick
Asked: 2023-06-12 17:31:11 +0800 CST

通过返回码检测带有 dig 的区域传输是否成功

  • 7

我有这样的脚本

CHARSET=ASCII dig domain.com AXFR > domain.com.zone

if [ "$?" = "0" ]; then
    echo "OK"
else
    echo "Something went wrong"
    
fi

但是,我看到末尾有一行不完整的文件

;; communications error: end of file

我的脚本中是否有错误或我如何“捕获”此错误?

shell
  • 1 个回答
  • 111 Views
Martin Hope
Martin Braun
Asked: 2022-04-13 05:24:22 +0800 CST

如何在 shell 中获取我在 Proxmox VE 设置中输入的电子邮件?

  • 0

当我登录到我的 Proxmox VE7 主机时,我想获得我在安装时设置 Proxmox 时输入的电子邮件。可能吗?

这个想法是非交互地自动化 certbot 初始化,我宁愿使用我之前自动输入的电子邮件,也不愿再次在我的脚本中询问电子邮件。

澄清一下,我希望在 shell 脚本中获得我在此处输入的电子邮件:

在此处输入图像描述

bash shell proxmox
  • 2 个回答
  • 200 Views
Martin Hope
guettli
Asked: 2022-04-09 05:16:24 +0800 CST

快捷方式:| 少 [ENTER]

  • -4

我经常打字| less [ENTER]。

我想对此进行优化。

环境:Ubuntu 20.04

这也适用于在浏览器中运行的终端。

知道如何以更少的努力输入上面的字符串吗?

如果可以为此使用 CapsLock 键,那就太酷了,因为我不需要这个键(而且使用十指触摸打字系统很容易访问)。

linux shell keyboard-shortcuts shortcut
  • 2 个回答
  • 110 Views
Martin Hope
serverstackqns
Asked: 2022-04-08 22:21:30 +0800 CST

shell 脚本中 set-hostname 和 mv 命令的变量

  • 0

我在 Shell 中有以下脚本:

read n
for ((i=1;i<=$n;i++))
do
echo "Connecting to $publicip"
ssh -i ./key.txt root@$publicip 'hostnamectl set-hostname autotest$i.domain.com && mv /etc/letsencrypt/live/autotest.domain.com /etc/letsencrypt/live/autotest$i.domain.com && reboot'
done

mv 命令使用上述命令中的变量。但这似乎不起作用。我得到一个错误是 mv: cannot move '/etc/letsencrypt/live/autotest.domain.com' to a subdirectory of its own, '/etc/letsencrypt/live/autotest.domain.com/autotest.domain.com'当我检查另一台服务器以查看主机名是否已更改时,即使设置主机名似乎也不起作用(尤其是使用变量)。围绕变量尝试了很多东西,比如添加“”和 {} 等,但没有任何效果。

有人可以在这方面帮助我。

linux shell hostname shell-scripting mv
  • 1 个回答
  • 214 Views
Martin Hope
Christopher Thomas
Asked: 2022-03-09 09:22:13 +0800 CST

导出新的环境参数而不输出到终端

  • 0

我正在尝试运行一个脚本,而当我不希望它输出文本时,bash 导出正在输出文本,因为它破坏了输出。我需要运行一个脚本来提取一些信息,然后将其插入到下一个命令环境中,有点像获取 awscli 的 AWS 机密并将它们透明地传递到 aws 环境中。我得到不一致的结果,我不确定为什么

$ ./bin/aws-creds mock
AWS_ACCESS_KEY_ID=mock1234
AWS_SECRET_ACCESS_KEY=mock1234
AWS_CREDS=success

$ ddt aws-creds mock
AWS_ACCESS_KEY_ID=mock1234
AWS_SECRET_ACCESS_KEY=mock1234
AWS_CREDS=success

两者输出相等,这很棒,所以让我们尝试运行它们并在输出上使用 export

$ export $(./bin/aws-creds mock)
$ export $(ddt aws-creds mock)
AWS_ACCESS_KEY_ID=mock1234
AWS_SECRET_ACCESS_KEY=mock1234
AWS_CREDS=success
declare -x .... a bunch of extra things from my environment

等一等?这两个命令在使用子shell $(...) 进行导出时似乎做了不同的事情,这就是我想要解决的问题。我想像第一个 ./bin 脚本一样,没有输出,而是将所有新参数插入到 shells 环境中。看起来我写的脚本'ddt'由于某种原因不能以同样的方式工作。

任何人都可以解释原因并提出一些解决方法吗?

bash shell export
  • 1 个回答
  • 43 Views
Martin Hope
Ramon Smits
Asked: 2022-02-26 01:51:19 +0800 CST

运行在 shell 中作为脚本运行的命令

  • 0

在 shell 中运行以下命令可以正常运行:

ssh user@machine systemctl status my-service.service
ssh user@machine sudo systemctl stop my-service.service
scp -r ./my-service/* user@machine:/home/user/my-service
ssh user@machine chmod +x /home/user/my-service/my-service
ssh user@machine sudo systemctl start my-service.service
ssh user@machine sudo systemctl status my-service.service

但是,将其放在deploy.sh文件中会导致上述任何一项都无法执行。

错误:

  • 无效的单元名称“my-service”被转义为“my-service\x0d”(也许你应该使用systemd-escape?)
  • 找不到单元 my-service\x0d.service。
  • 无效的单位名称“my-service.service”被转义为“my-service.service\x0d”(也许你应该使用systemd-escape?)
  • 无法停止 my-service\x0d.service:未加载单元 my-service.service\x0d.service。: 没有这样的文件或目录nlock/
  • chmod: 无法访问'/home/user/my-service/my-service'$'\r': 没有这样的文件或目录
  • 无效的单位名称“my-service.service”被转义为“my-service.service\x0d”(也许你应该使用systemd-escape?)
  • 无法启动 my-service.service\x0d.service:未找到单元 my-service.service\x0d.service。无效的单位名称“my-service.service”被转义为“my-service.service\x0d”(也许你应该使用systemd-escape?)
  • 找不到单元 my-service.service\x0d.service。

有的被打散了。这似乎与逃避有关。出于某种原因,在行尾添加一个空格使其有点工作,但仍然不是没有错误。

谷歌搜索错误显示了一些关于使用的命中--并将其与尾随空格一起添加使得一些命令工作但仍然给出转义错误。

linux shell escaping shell-scripting
  • 1 个回答
  • 189 Views
Martin Hope
jhericks
Asked: 2021-09-24 16:29:02 +0800 CST

为什么`ps -x | grep foo` 是否包含 grep 命令?

  • 1

我知道它确实(通常)包括 grep 进程,并且我知道添加 | grep -v grep或 grepping[f]oo会阻止它,但我的问题更多是关于我猜的操作顺序。

例如,在这个人为的例子中,我看到了几个 grep 进程:

% ps -x | grep login | grep login | grep login | grep login
 2475 ??         0:00.03 /usr/libexec/loginitemregisterd
 2115 ttys004    0:00.04 login -fp jasonerickson
29715 ttys004    0:00.00 grep login
29716 ttys004    0:00.00 grep login
29717 ttys004    0:00.00 grep login
29718 ttys004    0:00.00 grep login

这告诉我ps -x必须在该行最后执行,因为它列出了所有后续的 grep 命令。但是,它并不一致。有时它会列出 4 或 3 或 2 个,甚至没有 grep 进程。这对我来说意味着它并不总是最后的。

这是怎么回事?

shell shell-scripting ps
  • 2 个回答
  • 1571 Views
Martin Hope
sataranights
Asked: 2021-09-16 10:43:20 +0800 CST

如何在我的网络中知道哪些计算机有本地管理员帐户处于活动状态

  • 0

正如标题所说:我如何知道在我的网络中哪些计算机的本地管理员帐户处于活动状态?因为,根据安全顾问的要求,我们必须知道,如果可能的话,禁用网络上 300 多个笔记本/台式机中的每个本地管理员帐户。

有一个net use或wmi命令来解决它吗?可以设置递归询问网络上的每一台计算机吗?如果有帮助,我们有一个域控制器,但总是有一些组的计算机未加入域。

powershell shell command
  • 1 个回答
  • 85 Views
Martin Hope
alvan
Asked: 2021-07-26 08:18:49 +0800 CST

CENTOS apache ALL=(root) NOPASSWD: /path/to/shell.sh 不工作

  • 1

试图做一个web界面IPtables管理。

创建了一个文件test.php

$output = shell_exec('sudo bash /usr/bin/iptables.sh 2>&1');
echo $output;

给 /usr/bin/iptables.sh NOPASSWD 这样我就可以通过 apache 使用 sudo 执行文件,而无需使用密码

sudo iptables -L

sudoers 文件:

apache ALL=(root) NOPASSWD: /usr/bin/iptables.sh

但我仍然收到错误

我们相信您已经收到了本地系统管理员的常规讲座。它通常归结为以下三件事:#1) 尊重他人的隐私。#2) 打字前三思。#3) 权力越大,责任越大。sudo:需要终端才能读取密码;使用 -S 选项从标准输入读取或配置 askpass 助手{"mode":"full","isActive":false}

但是,如果我使用

apache ALL=(root) NOPASSWD: ALL

一切正常。

我仔细检查了我的目录并使用了确切的路径

[root@CentOS bin]# readlink -f iptables.sh
/usr/bin/iptables.sh

这里超级无能,有人可以帮我指路吗?:'(

bash shell sudo apache-2.4 centos8
  • 2 个回答
  • 474 Views

Sidebar

Stats

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

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve