Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何从脚本向SSH公钥的末尾添加/替换命令?_Linux_Perl_Awk_Ssh_Sed - Fatal编程技术网

Linux 如何从脚本向SSH公钥的末尾添加/替换命令?

Linux 如何从脚本向SSH公钥的末尾添加/替换命令?,linux,perl,awk,ssh,sed,Linux,Perl,Awk,Ssh,Sed,当限制SSH公钥可以访问哪些命令时,可以在.SSH/authorized\u keys中的SSH公钥末尾添加command=something 在我的例子中,我想编写一个Bash脚本来创建,每个公钥都需要有这样的限制 command="cd /home/backup/repos/<client fqdn>; borg serve --restrict-to-path /home/backup/repos/<client fqdn>",

当限制SSH公钥可以访问哪些命令时,可以在.SSH/authorized\u keys中的SSH公钥末尾添加command=something

在我的例子中,我想编写一个Bash脚本来创建,每个公钥都需要有这样的限制

command="cd /home/backup/repos/<client fqdn>;
         borg serve --restrict-to-path /home/backup/repos/<client fqdn>",
         restrict <keytype> <key> <host>
问题:

有没有一种官方的方法来代替写一行awk或sed

还是只有一个awk或sed解决方案如此漂亮,以至于不需要官方支持的方式

#!/usr/bin/perl

use File::Slurp;
my $fqdn = $ARGV[0];
my $k = read_file("$ARGV[1]");
my @m = split / /, $k;
my $c = 'command="cd /tank/borg/repos/FQDN; borg serve --restrict-to-path /tank/borg/repos/FQDN",restrict TYPE KEY';

$c =~ s/FQDN/$fqdn/g;
$c =~ s/TYPE/$m[0]/g;
$c =~ s/KEY/$m[1]/g;

print $c;

强制命令是文件中的第一个命令,而不是最后一个。

如果存在强制命令,请给出相关不雅awk或sed命令的示例。