Tập lệnh thực thi khi đăng xuất người dùng (người dùng không phải root)


8

Tôi đang ở trong phòng thí nghiệm của trường đại học đang chạy Ubuntu 12.10 với sự thống nhất và tôi không có quyền riêng tư gốc. Tôi cần chạy một kịch bản khi đăng xuất. Điều này có thể không?

Lưu ý: đây có thể là một bản sao của câu hỏi này , tuy nhiên các câu trả lời được đưa ra khá khó hiểu và không có hướng cụ thể nào được đưa ra.


Phụ thuộc vào việc đó là đăng nhập đồ họa hay đăng nhập "dòng lệnh"
geirha

Đó là một đăng nhập đồ họa.
Geo909

3
Tôi đoán Bạn có thể viết một kịch bản đăng xuất chạy những gì bạn muốn, sau đó đăng xuất bằng gnome-session-quithoặc một cái gì đó tương tự.
Adobe

@adobe Hmm .. Cảm ơn, nghe có vẻ như một cách giải quyết tốt trong trường hợp của tôi. Mặc dù thật lạ khi một người dùng không có quyền riêng tư dường như không có cách đơn giản để giải quyết tình huống này .. Btw Tôi dường như không thể bỏ phiếu, có lẽ là do đại diện thấp.
Geo909

Câu trả lời:


4

Đây là từng bước thủ tục của gnome_save_yourselfphương pháp. Hãy làm một bài kiểm tra.

  1. Lưu mã sau dưới dạng ~/Desktop/execute_script_on_shutdown.sh (Từ http://www.linuxquestions.org/questions/linux-desktop-74/gnome-run-script-on-logout-724453/#post3560301 )

    #!/usr/bin/env python
    
    #Author: Seamus Phelan
    
    #This program runs a custom command/script just before gnome shuts 
    #down.  This is done the same way that gedit does it (listening for 
    #the 'save-yourself' event).  This is different to placing scipts 
    #in /etc/rc#.d/ as the script will be run before gnome exits.
    #If the custom script/command fails with a non-zero return code, a 
    #popup dialog box will appear offering the chance to cancel logout
    #
    #Usage: 1 - change the command in the 'subprocess.call' in 
    #           function 'session_save_yourself' below to be what ever
    #           you want to run at logout.
    #       2 - Run this program at every gnome login (add via menu System 
    #           -> Preferences -> Session)
    # 
    #
    
    import sys
    import subprocess
    import datetime
    
    import gnome
    import gnome.ui
    import gtk
    
    
    class Namespace: pass
    ns = Namespace()
    ns.dialog = None
    
    
    def main():
        prog = gnome.init ("gnome_save_yourself", "1.0", gnome.libgnome_module_info_get(), sys.argv, [])
        client = gnome.ui.master_client()
        #set up call back for when 'logout'/'Shutdown' button pressed
        client.connect("save-yourself", session_save_yourself)
        client.connect("shutdown-cancelled", shutdown_cancelled)
    
    
    def session_save_yourself( *args):
            #Lets try to unmount all truecrypt volumes
    
    
        #execute shutdowwn script
        #########################################################################################
        retcode = subprocess.call("bash /home/totti/Desktop/shutdown_script.sh", shell=True)
        ##########################################################################################
        if retcode != 0:
            #command failed  
            show_error_dialog()
        return True
    
    def shutdown_cancelled( *args):
        if ns.dialog != None:
            ns.dialog.destroy()
        return True
    
    
    def show_error_dialog():
        ns.dialog = gtk.Dialog("There was a problem running your pre-shutdown script",
                               None,
                               gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
                               ("There was a problem running your pre-shutdown script - continue logout", gtk.RESPONSE_ACCEPT))
        if ns.test_mode == True:
            response = ns.dialog.run()
            ns.dialog.destroy()
        else:
            #when in shutdown mode gnome will only allow you to open a window using master_client().save_any_dialog()
            #It also adds the 'Cancel logout' button
            gnome.ui.master_client().save_any_dialog(ns.dialog)
    
    
    
    #Find out if we are in test mode???
    if len(sys.argv) >=2 and sys.argv[1] == "test":
        ns.test_mode = True
    else:
        ns.test_mode = False
    
    if ns.test_mode == True:
        main()
        session_save_yourself()
    else:
        main()
        gtk.main() 
  2. Làm cho nó thực thi:

    chmod +x ~/Desktop/execute_script_on_shutdown.sh
  3. Lưu lại như sau ~/Desktop/shutdown_script.sh

    #!/usr/bin/bash
    touch ~/Desktop/AAAAAAAAAAAAAAAAAAAAAAAAAAA  
  4. Thực thi kịch bản chính

    bash ~/Desktop/execute_script_on_shutdown.sh

Bây giờ bạn cảm thấy kịch bản chờ đợi một cái gì đó

  1. Đăng xuất hoặc tắt hệ điều hành của bạn (Ubuntu)
  2. Đăng nhập
  3. Kiểm tra một tập tin có tên AAAAAAAAAAAAAAAAAAAAAAAAAAAtrên máy tính để bàn của bạn.

    ls -l ~/Desktop/AAAAAAAAAAAAAAAAAAAAAAAAAAA

Nếu bạn thấy tập tin mọi thứ đều ổn. Bây giờ bạn có thể chỉnh sửa shutdown_script.shcho phù hợp với nhu cầu của bạn. Cũng nhớ thực hiện execute_script_on_shutdown.shđăng nhập khi bật (hoặc làm cho nó tự động thực thi khi khởi động).



Thật không may, tôi sẽ rời khỏi trường một thời gian và tôi không có quyền truy cập vào một máy tính để bàn gnome. Nếu điều này được thử nghiệm và hoạt động, tôi có thể chấp nhận nó như là câu trả lời, mặc dù ..
Geo909

Thử nghiệm trên Ubuntu 12.10
totti

Cái này có hoạt động với Unity không?
Gilles 'SO- ngừng trở nên xấu xa'

1
Đã thử nghiệm thành công trên Ubuntu 12.10, với sự thống nhất
totti
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.