Tom Wurgler <twu...@goodyear.com> writes: Hi Tom,
> I have the following code, which works well to a point: > > (defun sudo-shell-as-user (host user &optional arg) > "Use sudo to open a shell on HOST as USER > The password it asks for is the root password on the specified > machine." > (interactive "sMachine? \nsUser? ") > (let* ((tramp-default-proxies-alist > `((,(regexp-quote host) > ,(regexp-quote user) > "/ssh:root@%h:"))) > (dir "") > (bname) > (arg (if arg arg 1)) > (newone (if (not (string-match "/sudo:" default-directory)) t > nil)) > (default-directory (if newone (concat "/sudo:" user "@" host ":") > default-directory))) > (setq bname (concat "*ssh-sudo:" user "@" host "*<" > (number-to-string arg) ">")) > (shell bname) > (if (string-match dir ".") (setq dir "~")) > (if newone > (progn > (sit-for 2) > (insert (concat "cd " dir)) > (comint-send-input))))) > > This lets me log in as the user using sudo to the specified computer. > But I don't have that that user's environment. I *think* what I need > is the option "-i" or "--login" to the command sudo. But I can't > figure how to get it in there. > > Is this possible? Is this what I even need? The arguments for all methods are declared in tramp-methods. For the sudo method, we have --8<---------------cut here---------------start------------->8--- ("sudo" (tramp-login-program "sudo") (tramp-login-args (("-u" "%u") ("-s") ("-H") ("-p" "P\"\"a\"\"s\"\"s\"\"w\"\"o\"\"r\"\"d\"\":"))) (tramp-login-env (("SHELL") ("/bin/sh"))) (tramp-remote-shell "/bin/sh") (tramp-remote-shell-login ("-l")) (tramp-remote-shell-args ("-c")) (tramp-connection-timeout 10)) --8<---------------cut here---------------end--------------->8--- What you need is to change in tramp-login-args "-s" to "-i". The technique to change values in tramp-methods is described in the Tramp manual, (info "(tramp) Predefined connection information") The following addition to your code should do the trick: --8<---------------cut here---------------start------------->8--- ... (newone (if (not (string-match "/sudo:" default-directory)) t nil)) (default-directory (if newone (concat "/sudo:" user "@" host ":") default-directory)) + (tramp-connection-properties + `((,(regexp-quote (file-remote-p default-directory)) + "login-args" (("-u" "%u") ("-i") ("-H") + ("-p" "P\"\"a\"\"s\"\"s\"\"w\"\"o\"\"r\"\"d\"\":"))) + . ,tramp-connection-properties))) (setq bname (concat "*ssh-sudo:" user "@" host "*<" (number-to-string arg) ">")) (shell bname) ... --8<---------------cut here---------------end--------------->8--- > Any input appreciated. > thanks! > tom Best regards, Michael. _______________________________________________ Tramp-devel mailing list Tramp-devel@gnu.org https://lists.gnu.org/mailman/listinfo/tramp-devel