Não saber a senha dificulta as coisas, mas talvez a solução seja: é possível apagar temporariamente a senha de um usuário? (E depois redefina-o para o que era antes.)
Para começar:
Primeiro, obtenha a janela de login para exibir. Basta sair do usuário atual, usar a troca rápida de usuário ou usar SSH:
cd "/ Sistema / Biblioteca / CoreServices / Menu Extras / User.menu / Conteúdo / Recursos /"
sudo ./CGSession -suspend
Ou, para mudar imediatamente para um usuário específico, o que provavelmente mostrará a janela de login (de repente, isso não funciona mais no meu 10.5 Leopard):
sudo ./CGSession -switchToUserID 501
O que é mostrado agora depende um pouco das Preferências do Sistema, mas vamos assumir que são os ícones dos usuários e seus nomes. Para ativar um nome, teríamos que digitar as primeiras letras. Depois, após Return, o prompt de senha é exibido. Alternativamente pode-se seleccionar qualquer nome (como pressionando seta para baixo) e pressione Option-Return to ser solicitado tanto para qualquer nome de usuário e sua senha. Eu não sei como se pode dizer qual tela é mostrada, mas vamos guardar isso para mais tarde ...
Portanto, para selecionar o primeiro nome de usuário (aleatório) e pressione Option-Return, digite um nome de usuário específico, pressione Return e digite a senha:
sudo osascript -e 'tell app "System Events"
código chave 125
retorno de tecla usando a opção para baixo
pressionamento de tecla "o nome de usuário"
atraso 1.0
retorno de pressionamento de tecla
atraso 1.0
pressionamento de tecla "a senha"
atraso 1.0
retorno de pressionamento de tecla
dizer final '
O exemplo acima mostra algum erro que, até onde eu sei, não limita o uso:
osascript [285]: 3891612: (connectAndCheck) Aplicativos não confiáveis não são
permissão para conectar ou iniciar o Windows Server antes do login.
_RegisterApplication (), FAILED TO estabelecer a conexão padrão para
o WindowServer, _CGSDefaultConnection () é NULL.
Alternativamente, use o script específico do idioma da " Script A janela de login através da Apple Remote Desktop " (talvez um dia os comentários em que o site irá mostrar uma melhor solução):
informe o processo "SecurityAgent"
defina o valor do campo de texto 1 do grupo 1 da janela 1 como "o nome de usuário"
defina o valor do campo de texto 2 do grupo 1 da janela 1 como "a senha"
fim de contar
clique no botão "Log In" da janela 1 do processo de inscrição "SecurityAgent"
Mas o principal problema é: isso ainda precisa da senha . No entanto: obviamente, nenhuma senha é necessária quando um usuário possui uma senha em branco. De fato, para senhas em branco, basta clicar no ícone de um usuário. Portanto, se o envio de pressionamentos de tecla usando o AppleScript for aceitável, talvez "tudo" seja o que resta para descobrir:
É possível anular temporariamente a senha de um usuário, permitir iniciar (ou retomar) a sessão sem saber a senha ...?
Alguém pode fazer o AppleScript à prova de erro? Gostar:
- Como saber se a janela de login está visível? (talvez
stat -f%Su /dev/console
possa ajudar, pois isso geraroot
enquanto a janela de login é exibida)
- Como saber qual janela de login é mostrada? (Como: um mostrando ícones e nomes de login, ou uma lista suspensa, ou talvez apenas uma solicitação de senha, se alguém selecionou mudar para um usuário específico?)
- Livre-se dos atrasos.
- E a mensagem de erro?
(Uma observação para o teste: ao usar o Compartilhamento de tela, parece que definir a preferência Ao controlar computadores: Criptografar senhas e pressionamentos de tecla também retém a conexão quando a janela de login é exibida ou após um usuário ter efetuado login com êxito. Ao usar Criptografar todas as redes dados , meu Mac precisa restabelecer a conexão de compartilhamento de tela cada vez que um login é exibido ou um usuário é trocado.)