如何查明 Linux 计算机何时通过 SCP 启动?

如何查明 Linux 计算机何时通过 SCP 启动?

我通过 SCP 从另一个组拥有的机器上获取文件。我唯一的访问权限是 SCP,我无法通过 SSH 访问他们的机器。有时,他们的系统会重新启动,如果我不知道的话,这会给我带来问题。我希望从他们的系统中 SCP 一些文件来找出它上次启动的时间,但我似乎找不到任何合适的东西。

我尝试通过 scp 复制:

scp -p remoteSys:/proc .

(-p 表示保留时间戳)并被告知 /proc 不是常规文件,无法复制。当我尝试时:

scp -p remoteSys:/proc/uptime .

我得到了一个带有当前时间戳的零字节文件。我复制了:

scp -p remoteSys:/var/log/boot.log .

我得到了一个零大小的文件,其日期可能是也可能不是启动日期。

有人有什么好的建议吗?

先感谢您。

答案1

scp remote:/var/log/wtmp /tmp/remote.wtmp
last -f /tmp/remote.wtmp reboot

答案2

/proc在访问时动态创建 - 这解释了当前日期时间戳。

时间戳boot.log应与最新启动和所有在线服务一致。

对我来说,考虑到您的限制,您当前的解决方案似乎足够了。

答案3

如果您的系统使用 cronie(大多数系统都使用 - 并且您可以访问 crontab 所在的目录),您可以在 crontab 中使用 @reboot 条目并执行命令来创建您自己的重新启动日志。如果你能做到这一点,你可以将 crontab 文件放入(通常)/var/spool/cron/ 中,这并不是真正正确的方法,但它可以工作(通常你需要调用 crontab -e)。如果您可以执行此操作,则需要确保该文件归您的用户所有,并且该文件的权限设置为 600。

例如,我在 /var/spool/cron/myusername 中放置了一个文件,其中包含以下内容:

@reboot /usr/bin/uptime >> /home/myusername/uptime.log
@reboot /usr/bin/echo "System was rebooted, current reboot date $(/usr/bin/date)" >> /home/myusername/uptime.log

重新启动后,条目将添加到 /home/myusername/uptime.log 中:

18:55:06 up 0 min,  0 users,  load average: 0.88, 0.18, 0.06
System was rebooted, current reboot date Wed Jun  6 18:55:06 EDT 2018

我觉得很奇怪,你有 scp 访问权限,但没有 ssh 访问权限,他们不会在非特权帐户下授予你 ssh 访问权限吗?在我看来,你应该有 ssh 访问权限,因为 scp 通过 ssh 运行,所以除非你没有 shell,否则我有点困惑。

相关内容