我将不胜感激在以下问题的任何帮助: 我有一个openladp(2.3.39)服务器(Fedora 8),它从其他ldap客户端(各种版本的Fedora)authentication用户。 在尝试升级整个基础架构时,使用tcsh(作为默认shell)的ldap用户无法login运行CentOS 7的新客户端。相反,ldap用户使用bash以及本地用户(不pipe其默认shell)login没有问题。 Ldap tcsh用户既不能从控制台也不能从sshlogin。 从控制台,我收到的消息是: pam_unix(login:auth) authentication failure pam_unix(login:session) session opened for user 并从ssh(没有失败部分): pam_unix(sshd:session) session opened for user 但是,用户永远不会得到一个shell提示符,表明login挂起。 我不知道这个问题是否与pam有关,但在我的/etc/pam.d/system-auth-ac下面find,因为它是由system-authconfig自动创build的: #%PAM-1.0 # This file is auto-generated. # User changes will be destroyed the next time authconfig is run. auth required pam_env.so auth sufficient pam_unix.so nullok try_first_pass auth requisite pam_succeed_if.so uid >= […]
我尝试导出HISTTIMEFORMAT='%D %T'但似乎在我设置HISTTIMEFORMAT之前执行的命令的时间戳将是我login当前会话的时间。 这是正常的吗? 有没有什么办法来检查上一个命令执行的时间? 谢谢。
我有一个批处理脚本,在屏幕内启动一个Java服务器应用程序。 该命令如下所示: cd /dir/ && screen -A -m -d -S javascreen java -Xms640M -Xmx1024M -jar javaserverapp.jar nogui 在运行批处理脚本之后,它启动服务器并将其放入正确的屏幕中。 如果我之后列出我的屏幕,我会看到类似这样的内容: user@gtwy /dir $ screen -list There is a screen on: 16180.javascreen (Detached) 1 Socket in /var/run/screen/S-user. 但是,我有第二批脚本发送自动化命令到此服务器并运行在不同的crontab间隔。 由于应用程序的工作方式,我发送命令给它(这个命令告诉它提醒连接的用户“testing123”): screen -X exec .\!\! echo say testing 123 我也试过: screen -R -X exec .\!\! echo say testing 123 […]
我有一种情况,我正在testing一个新的文件系统,有一些元数据的问题。 所有的文件都是完整的,但是我最终必须将每个文件有效地移动到另一个卷上,然后立即回到原来的位置。 显然, mv不会保留所有的属性(尤其是所有的时间戳)。 我正在想一些find命令,而exec'ing cp -p /original/path/to/file /tmp/location/file , rm /original/path/to/file , cp -p /tmp/location/file /original/path/to/file , rm /tmp/location/file 。 也许所有这些命令在脚本中传递给find exec? 我不确定这里最有效的方法,但想要一些快速的input,以确保我覆盖所有的基础,并有一个精确的命令,不会让我哀悼一些数据属性损失时,并做了。 我有几百GB的字节来回移动,所以我需要尽可能的小心和高效。 这是我迄今为止所提出的解决scheme,并且会喜欢一些input: Shell脚本safe_move.sh : #!/usr/bin/env bash SRC_FILE_AND_PATH="$1" SRC_BASENAME=`basename "$1"` DESTINATION_PATH="/mnt/tmp" cp -a ${SRC_FILE_AND_PATH} ${DESTINATION_PATH}/${SRC_BASENAME} rm -f ${SRC_FILE_AND_PATH} cp -a ${DESTINATION_PATH}/${SRC_BASENAME} ${SRC_FILE_AND_PATH} rm -f ${DESTINATION_PATH}/${SRC_BASENAME} 这将被称为: find /path/to/move -type f -exec safe_move.sh […]
试图安全地从受到严重感染的Windows XP和2003机器中检索文件,这些机器是通过收购获得的。 我也有类似的需求来自动运行在PXE启动的DRBL机器上运行的rsync到我们的服务器的脚本。 下面的代码会导致用单引号将整个'–filter ='''参数包装到rsync中。 注意回声消除单引号,但不是rsync。 我究竟做错了什么? 将使每个参数在数组中的条目帮助? 失败,因为包装单引号 : '–filter='\''- "Default User/"'\'' –filter='\''- "Application Data/"'\'' ' 当我运行相同的确切命令,但手动删除包装单引号,rsync运行良好。 作品 : –filter='\''- "Default User/"'\'' –filter='\''- "Application Data/"'\'' 尝试了没有和没有保护参数。 #!/bin/sh -x PROTECTARGS=–protect-args EXCLUDE=( '- "Default User/"' '- "Application Data/"' ) echo EXCLUDE="${EXCLUDE[*]}" FILTER=() for X in "${EXCLUDE[@]}"; do FILTER=( "${FILTER[@]}" "–filter='${X}' " ); done; echo FILTER="${FILTER[*]}" if […]
我试图编写一个bash脚本,它将在被pam_exec调用时执行rsync。 我尝试了几种不同的方式,我不确定我做错了什么。 当我尝试通过添加login运行脚本 session optional pam_exec.so /usr/bin/local/sync.sh 到我的sshd文件,它给了我12退出码。 如果我login然后手动运行我的脚本,它允许我连接到远程服务器,它列出了我的文件,但它实际上并没有同步任何东西。 我已经尝试了下面的代码使用buth $USER和$PAM_USER 。 $PAM_USER根本不起作用。 #!/bin/sh rsync -azv -e ssh $USER@remote_server:/home/html/$USER/ /home/html/$USER
我有一个用户空间应用程序,我用它来写入一个PCI设备的寄存器。 它将设备的基本内存地址作为参数。 我不想通过每个平台上的lspci来lspci ,而是想写一个bash脚本来使用供应商/设备ID来查找基地址,然后调用应用程序。 让我们以设备ID为“0891”的英特尔networking控制器为例。 这是在一个Ubuntu的盒子,但我需要它在不同的Linux发行版上工作。 我想只是用这样的parsinglspci的输出: lspci -vn | grep -A 3 0891 | grep Memory | awk '{print $3}' 这产生: f0500000 但是我有兴趣从文件系统中的某个地方获取基地址,而不是依赖于另一个应用程序,所以我尝试了: cat /proc/bus/pci/devices | grep 0891 | awk '{print $4}' 这产生: f0500004 为什么第二个值偏移了4个字节? 奖金问题:我可以从哪里获得PCI设备的基本内存地址,而不依赖于其他应用程序,如lspci,可以跨分配使用?
我有一个很奇怪的服务器,希望你能帮我找出正在发生的事情。 这里是事实: 该服务器有2个用户: root和myuser 服务器只接受使用pubkey的ssh连接 如果我从Putty(在Windows上)以myuser的身份连接到服务器,则连接需要几秒钟,并立即显示cmd提示符 如果我从Cygwin(在Windows上)以myuser的身份连接到服务器,则连接需要几秒钟,但是需要40秒才能显示cmd提示符。 从PHP脚本连接,甚至在同一个networking中的另一台linux服务器的ssh连接时也是如此 在Cygwing我使用OpenSSH_7.2p1, OpenSSL 1.0.2g ,在PHP的phpseclib库和其他的Linux服务器OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 用root尝试相同的过程会产生相同的结果 所以,在这两种情况下( session opened for user myuser sshd日志写session opened for user myuser ),ssh连接都能正确build立,但是在一种情况下,cmd提示会立即出现,另一种情况则会花费太长时间(60秒)。 任何想法可能会促成这个问题? 如果您需要一些关于日志消息或configuration文件的更多信息,请在评论中告知我。 更新1 运行strace ssh [email protected]输出以下内容: **lot of stuff** 18:20:10 read(3, "Dq\340\342\5\16\7+\367\366r\315\241\272\35\23\2225\344\366\332D\36\217\254$ 18:20:10 ioctl(0, TIOCGWINSZ, {ws_row=60, ws_col=237, ws_xpixel=0, ws_ypixel=0}) = 0 18:20:10 getsockopt(3, SOL_TCP, TCP_NODELAY, [0], [4]) = […]
我的问题可以看作是如何通过SSH的差异扩展? 有点扭曲。 环境 macOS Sierra(10.12.3) OpenSSH 7.3 示例情况 我试图在两个文件之间打印diff ,其中一个位于远程主机上,需要读取sudo 。 如果这个远程文件是我的远程用户可读(或者如果我可以用sudo标志NOPASSWD执行命令),我只需要执行: diff LOCALFILE <(ssh host 'cat REMOTEFILE') 然而,我确实需要进行身份validation才能执行远程命令,这意味着我必须分配一个伪terminal与ssh -t ,并且下面的执行永远不会完成: diff LOCALFILE <(ssh -t host 'sudo cat REMOTEFILE') 故障排除 ps显示我的ssh进程已停止: STAT TIME COMMAND S+ 0:00.00 diff LOCALFILE /dev/fd/12 T 0:00.03 ssh -t host sudo cat REMOTEFILE 在这一点上, ssh进程没有响应SIGTERM,上面的文件描述符不存在: ❯ ls -l /dev/fd total 0 […]
DISTRIB_ID=Ubuntu DISTRIB_RELEASE=8.10 DISTRIB_CODENAME=intrepid DISTRIB_DESCRIPTION="Ubuntu 8.10" 这是服务器版本。 当我进入它时,我遇到以下问题: 问题1 选项卡完成performance奇怪到无法使用的地步: > cd ~/<press TAB> -sh: <( compgen -d — '/home/dmitriid/' ): No such file or directory > vi ~/.<press TAB> <( compgen -d — '/home/dmitriid/.' ): No such file or directory -sh: <( eval compgen -f -X '*.@(o|so|so.!(conf)|a|rpm|gif|GIF|jp?(e)g| JP?(E)G|mp3|MP3|mp?(e)g|MPG|avi|AVI|asf|ASF|ogg|OGG|class|CLASS)' — $(quote_readline $cur) ): No such file […]