Один лайнер, который перечисляет всех пользователей и печатает cron для каждого пользователя:
for user in $(getent passwd | cut -f1 -d: ); do echo $user; crontab -u $user -l; done
Это решение:
/var/spool/cron/crontabs/
против/var/spool/cron/
Прежде всего, вам действительно не нужно sudo su
и уж точно не нужно sudo su - root
. Команда su
по умолчанию имеет значение root, но существует команда sudo
для запуска команд, которые необходимо запускать от имени root. Так что вам просто нужно sudo command
. Тем не менее, вам следует избегать запуска команд от имени root, если это действительно не требуется, а hostname
не требует root. Имея все это в виду, это должно делать то, что вам нужно:
ssh -q -t -o ConnectTimeout=10 learnserver sh -c "hostname && sudo grep PermitRootLogin /opt/ssh/etc/sshd_config"
Другими словами, вместо того, чтобы пытаться запускать несколько команд, объедините их в одну. Здесь мы используем sh -c command
, что означает «запустить sh
, а затем запустить command
».
Вы можете передать набор команд в виде сценария в ssh. Например, для вашего случая
{
echo "sudo su -"
echo "hostname"
echo "grep PermitRootLogin /opt/ssh/etc/sshd_config/"
} > /tmp/some-script.sh
, а затем
ssh your-remote < /tmp/some-script.sh
обратите внимание, что «создание сценария» — это всего лишь пример того, каким должен быть ваш сценарий.