Saya mengacau, keluar di .bashrc

27

Saya meletakkan "keluar" di file .bashrc saya. Saya tidak memiliki akses fisik ke mesin, jadi untuk menghubungkannya saya menggunakan ssh. Saya tidak memiliki hak akses root. Setiap kali saya terhubung ke server, koneksi secara otomatis ditutup.

Sejauh ini, saya sudah mencoba:

  • Timpa .bashrc dengan scp dan sftp. Koneksi ditutup sebelum saya dapat melakukan apa saja.
  • Menggunakan beberapa program GUI yang berbeda untuk mengakses ssh (koneksi ditutup)
  • Menimpa file dengan ftp. (tidak dapat menggunakan ftp)
  • Dari komputer rumah saya
    • Tuan rumah $ ssh "bash --noprofile --norc" (koneksi ditutup)
    • $ ssh host "mv .bashrc bashrc_temp" (koneksi ditutup)
    • Tuan rumah $ ssh "rm .bashrc" (hal yang sama)
    • $ ssh host -t (koneksi ditutup)

Apakah ada yang bisa saya lakukan untuk menonaktifkan .bashrc atau mungkin menimpa file sebelum .bashrc bersumber?

MEMPERBARUI

@ ring0

Saya mencoba saran Anda, tetapi tidak berhasil. File bashrc masih berjalan terlebih dahulu.

Hal lain yang saya coba adalah masuk dengan akun lain dan sudo mengedit .bashrc, tetapi saya tidak memiliki hak sudo pada akun ini.

Saya kira saya akan menghubungi admin.

EDIT

@shellholic

Saya tidak percaya, tapi pendekatan ini berhasil! Meskipun "keluar" terjadi dalam beberapa baris pertama (hanya terdiri dari beberapa blok jika dan pernyataan ekspor ) dalam file .bashrc, saya masih berhasil Ctrl-c menyela dengan sukses dalam dua puluh percobaan (butuh sekitar 3 menit). Saya menghapus baris yang menyinggung di .bashrc dan semuanya dalam keadaan berfungsi lagi.

camel_space
sumber
2
darwinawards.com Anda harus memiliki (sementara) akses sebagai pengguna yang dapat menimpa file .bashrc Anda, atau mengubah shell default Anda ke sesuatu yang lain. "Tanyakan Administrator sistem Anda" seperti kata MS.
2
man 8 sshdmengatakan itu 9. Runs user's shell or command.sebagai langkah kesembilan ...: - /
1
scp juga akan berhenti bekerja karena shell masih dibuka dan .bashrc dipanggil
Aleksandr Levchuk
FYI alasan sebagian besar saran ini tidak berfungsi adalah karena ssh mengeksekusi perintah apa pun dengan mengirimkannya sebagai argumen ke shell pengguna. Cari untuk dieksekusi di session.c. Tidak ada cara untuk memodifikasi / menambah / menghapus argumen permohonan shell pengguna ini.
Mark Wagner

Jawaban:

37

Anda dapat mencoba untuk membatalkan (ctrl + C) sebelum bagian keluar dari Anda .bashrcdieksekusi.

Saya mencoba dengan menambahkan berikut ini di bagian atas bashrc testuser, itu berfungsi, itu hanya masalah waktu. Sangat mudah dalam kasus saya:

sleep 3
echo "Too late... bye"
exit 0
shellholic
sumber
8
+1, karena mungkin itu satu-satunya solusi yang tidak memerlukan bantuan dari administrator sistem. Namun, banyak keberuntungan diperlukan untuk mendapatkan pengaturan waktu yang tepat (ssh -v host mungkin membantu sedikit).
Bersenang
Sebenarnya ctrl + C berhasil. Bahkan tanpa tidur. Saya menempatkan "keluar" ke bashrc saya dan dapat memulihkan dengan ctrl + C cepat setelah sekitar 4 mencoba. Harap edit jawaban sehingga saya dapat mengubah "-1" menjadi "+1".
Aleksandr Levchuk
@Alexandr Levchuk selesai
shellholic
4
Saya sangat menghargai kombinasi antara teknologi rendah yang konyol dan efektifitas brutal di sini.
unixtippse
1
Saya tertawa seperti orang gila, terburu-buru ketika akhirnya berhasil. Terima kasih @JooMing, saya mencoba semua metode dari sini serverfault.com/questions/94503/... bahkan yang dengan menekan Ctrl + C, tetapi hanya berhasil setelah menambahkan opsi -v!
mxmlnkn
12

Saya berhasil mengacaukan file .bashrc saya juga di kluster baru yang telah saya akses uji coba. Tidak ingin terlihat seperti noob, hal terakhir yang ingin saya lakukan adalah meminta bantuan dari admin, dan saya tidak bisa mendapatkan ^ + C yang tepat waktu untuk bekerja.
Namun apa yang berhasil, adalah mengirim perintah 'rm' sebagai argumen terakhir ke ssh. yaitu

ssh -tv user@host rm .bashrc

Saya tidak bisa mendapatkan perintah 'mv' untuk bekerja (dicoba sebelumnya tanpa -t), jadi saya pikir opsi -t harus melakukannya, tetapi Anda dapat mengujinya jika Anda mau. Saya sekarang telah pulih dari .bashrc ~ file (dibuat oleh vim) semuanya kecuali garis cerdik yang dimaksud dan semuanya benar di dunia! = D

Alex Leach
sumber
2
ssh -tv user@home mv .bashrc .bashrc-oldbekerja untuk saya
Code Commander
3

Jika Anda dapat masuk sebagai pengguna lain, coba ini:

su user -s /bin/sh

Anda akan membutuhkan kata sandi Anda, tentu saja.

Cakemox
sumber
1
Anda dapat mencoba shell yang berbeda, bukan berbasis sh: kshataucsh
Hubert Kario
3

Jika saya ingat beberapa pengalaman buruk yang saya alami seperti ini, ssh, scp, sftp tampaknya menjalankan file inisialisasi.

Saran saya adalah menggunakan FTP sederhana dan kemudian menghapus atau mengganti nama file file buruk pada baris perintah FTP setelah masuk. Saya berasumsi bahwa sistem Anda akan memungkinkan Anda mengakses FTP. Dalam kasus seperti itu, pastikan untuk mengganti kata sandi Anda (dengan aman) ketika Anda telah selesai melakukan perbaikan.

mdpc
sumber
Filezilla bekerja dengan sempurna untuk ini. Hanya perlu drop-down menu "Server" dan pilih pengaturan "Tampilkan file tersembunyi".
Danny G
1

Dari man ssh( OpenSSH_5.6p1setidaknya untuk, tidak yakin kapan itu ditambahkan),

~/.ssh/rc
        Commands in this file are executed by ssh when the user logs in, just
        before the user's shell (or command) is started.  See the sshd(8) manual
        page for more information.

..yang berarti Anda dapat membuat yang ~/.ssh/rcberisi berikut ini:

mv ~/.bashrc ~/bak.bashrc

Kemudian ketika Anda sshmasuk, bashrc yang bermasalah akan dipindahkan keluar jalan, sebelum shell login Anda dimulai - Anda kemudian dapat dengan jelas memperbaiki bak.bashrcdan memindahkannya kembali ke tempatnya.

dbr
sumber
0

Terhubung melalui SCP atau SFTP dan edit / ganti nama / hapus file .bashrc Anda dengan cara itu. Sunting - Doh, saya tahu Anda bilang Anda sudah mencobanya. Baiklah.

mfinni
sumber
0

Saya memiliki masalah yang sama, dan entah bagaimana bisa menyelesaikannya. Saya menggunakan ssh untuk mengakses sistem, dan menekan dan menahan Ctrl + c segera setelah saya masuk ke sistem. Kemudian, ~ / .bashrc tidak dibaca, dan saya dapat memodifikasinya.

miyashin
sumber
1
Duplikat jawaban yang paling banyak dipilih di sini
pauska
0

Saya menemukan ini berfungsi.

Mengganggu boot loader grub dengan menekan e ... lagi tekan e untuk masuk ke baris grub loading, lagi tekan e untuk mengedit baris kernel

pergi ke akhir baris;

tambahkan init = / bin / bash di akhir baris,

masukkan untuk kembali, b untuk boot,

itu akan membuka bash shell, buka vim /root/.bashrc dan edit sesuai. keluar dan sekarang kamu akan bisa login

Haseeb
sumber