小编Nir*_*Nir的帖子

按文件中的列表移动文件(带前导空格)

我有一个包含文件名的文件。例如:

/tmp/list.txt (每行开头都有空格):

  /tmp/file.log
  /app/nir/home.txt
  /etc/config.cust
Run Code Online (Sandbox Code Playgroud)

我想用一行将列出的所有文件移动/tmp/list.txt/app/dest

所以它应该是这样的:

cat /tmp/list.txt | xargs mv /app/dest/
Run Code Online (Sandbox Code Playgroud)

shell-script rename files

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

如何在 ssh 命令中禁用重试密码

我希望 ssh 命令只允许一次输入密码的机会,如果第一次密码错误,ssh 将返回

Permission denied (publickey......).
Run Code Online (Sandbox Code Playgroud)

是否有一个标志告诉 ssh 只请求一次密码?

代替:

[nir@dhcppc4 ~]$ ssh pokemon@192.168.1.103
pokemon@192.168.1.103's password: 
Permission denied, please try again.
pokemon@192.168.1.103's password: 
Permission denied, please try again.
pokemon@192.168.1.103's password: 
Permission denied (publickey.....).
Run Code Online (Sandbox Code Playgroud)

我想要:

[nir@dhcppc4 ~]$ ssh pokemon@192.168.1.103
pokemon@192.168.1.103's password: 
Permission denied (publickey.....).
Run Code Online (Sandbox Code Playgroud)

解决方案必须在客户端(例如 ssh 命令的某些标志或使用管道),我不能 touchsshd_config或任何其他系统配置文件。因为 - 通常 - 我构建了访问 LAN 中服务器的 3rd 方软件(因此我无法生成密钥或配置系统文件),密码保存在数据库中(因此不需要第二次尝试)。在我的代码中,如果我能够假设我只有一次尝试ssh/scp它将简化相关代码。

password ssh scp

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

检查与其他服务器的连接的方法

我想检查两台服务器之间的连接(即 ssh 是否成功)。

主要思想是使用中间服务器列表检查 server-a 和 server-b 之间的最短路径(例如,如果我在开发服务器上并且我想连接到生产服务器 - 通常直接 ssh 会失败)。

因为这可能需要一段时间,所以我不喜欢使用 SSH - 我更喜欢先检查我是否可以连接,如果可以,然后尝试通过 SSH 连接。

一些可能的途径来获得这个想法:

server-a -> server-b
server-a -> middle-server-1 -> server-b
server-a -> middle-server-6 -> server-b
server-a -> middle-server-3 -> middle-server-2 -> server-b
Run Code Online (Sandbox Code Playgroud)

希望你明白我在找什么?

linux networking ssh

10
推荐指数
2
解决办法
16万
查看次数

有没有办法听过程?

我想知道是否有办法在 Linux 和 unix 中监听进程——它何时结束以及进程(脚本)的退出代码是什么。

我不想编写一个脚本来运行X几秒钟并检查ps -ef | grep PID进程是否还活着。我想知道是否有办法让进程在结束时通知我,以及它的退出代码是什么。

linux process shell-script

9
推荐指数
2
解决办法
3864
查看次数

awk 按字符分割参数

文件是:

BASH.NIR
SH.ABI
Run Code Online (Sandbox Code Playgroud)

我希望 awk 脚本显示:

User is NIR, SHELL is BASH
User is ABI, SHELL is SH
Run Code Online (Sandbox Code Playgroud)

我不知道如何按字符拆分参数。这个想法是:

cat file.txt | awk '{print "User is " afterDot($1) ", SHELL is " beforeDot($1)}'
Run Code Online (Sandbox Code Playgroud)

awk text-processing

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

删除超过 1 天的文件夹

我想使用以下命令删除所有早于 1 天的文件夹:

find /test -mmin +1440 | xargs rm -rf

但是find列表的输出/test(并相应地将其删除)。

如何只找到 的子目录/test?( -maxdepth/-mindepth在 AIX 中不可用)

linux find aix

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

通过几台服务器的两台服务器之间的 SCP 文件

我想将文件从 server-a 复制到 server-d,但我只能从 server-b 访问 server-d,然后再到 server-c。server-a只能访问server-b,server-b只能访问server-c,server-c只能访问server-d..

目前我这样做:

server-a> scp /tmp/file.txt user@server-b
server-a> ssh user@server-b
server-b> scp /tmp/file.txt user@server-c
server-b> ssh user@server-c
server-c> scp /tmp/file.txt user@server-d
Run Code Online (Sandbox Code Playgroud)

这可能是通过 5,6,7,.. 服务器

我可以这样做吗?

ssh scp proxy

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

从 find -exec 操作 {} 返回字符串

我希望尽可能高效,以防有很多文件。我想要的是重命名我找到的所有文件并删除它们的后缀。

例如:

[/tmp] $ ls -l
a.log
b.log
c.tmp
[/tmp] $ find /tmp -name "*.log" -type f -exec mv {} {%.*} \;
[/tmp] $ ls -l
a
b
c.tmp
Run Code Online (Sandbox Code Playgroud)

这不起作用。如果它是一个普通的 bash 变量,它${var%.*}会一直返回var到最后一个..

scripting bash find shell-script

4
推荐指数
2
解决办法
2465
查看次数

awk 打印 ' 字符

我想打印:

cat file.log | awk '{print nir's $1}'
Run Code Online (Sandbox Code Playgroud)

输出应该是:

nir's aaa
nir's bbb
nir's abc
nir's dbc
Run Code Online (Sandbox Code Playgroud)

问题在于'in nir's

我也试过:

cat file.log | awk '{print nir\'s $1}'
cat file.log | awk '{print nir''s $1}'
cat file.log | awk '{print nir'''s $1}'
Run Code Online (Sandbox Code Playgroud)

shell awk quoting

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

在子目录中找到路径目录

我想找到bbb父目录调用的目录名称的路径aaa

例如

/aaa/bbb
/tmp/aaa/bbb
/usr/bin/aaa/bbb
/home/aaa/bbb
/home/aaa/xxx/bbb
Run Code Online (Sandbox Code Playgroud)

所以我写了这样的东西:

find /*/aaa -name bbb
Run Code Online (Sandbox Code Playgroud)

在某些平台上它可以工作,而在某些平台上它不工作,并且在任何情况下/aaa/bbb都找不到,因为没有父目录aaa

我想我可以跑,find / -name bbb | grep \/aaa但我想如果有更聪明的东西..?

linux find hp-ux aix

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